home | news | snapshots | manual | how to | tutorials | scripting
Download latest Fiji with TrakEM2
or go to menu "Help - Update Fiji".
Pull source code from the git repos.
Install and stay up to date with Fiji
TrakEM2 class diagram
TrakEM2 video tutorials
2012-07-04 - 1.0a released
Milestone release: 1.0a. TrakEM2 is now feature complete.
- New contextual menu items "Patch - Open image" and "Patch - Open original image".
- Create subproject can ignore hidden images.
- Fix bug #351, related to exporting flat images without mipmaps.
- Fix error in removing Stack ZDisplayable instances.
- Fix error in "Save as", didn't allow for ".xml.gz" extension.
- Fix error in duplicating Patch.
- Fix for long-standing error in the form of lack of undo upon clicking and dragging a tile very slightly.
- Layer alignment and montaging dialogs are split into multiple consecutive dialogs.
- Removed "Integral area averaging" as a possible mode for mipmaps, makes no sense anymore and "Area averaging" is better and faster.
- Coping with changes in the ImageJ API regarding ByteProcessor.setMinAndMax, which is no longer destructive.
- Some speed-ups by using the API better.
- New filters NormalizeLocalContrast (sort of like CLAHE but accelerated with integral images), DefaultMinAndMax, ResetMinAndMax and EnhanceContrast.
- Deal with potentially null FileInfo, adapting to changes in the ImageJ ij.jar library.
- "Prepaint" display property is disabled by default. Does no longer make much sense to have it.
- Long list of big and small fixes. See the git log.
2012-06-01 - 0.9i released
- When a Patch is selected and the Wand is clicked on it, a ROI is set on the display.
- Stephan Saalfeld added regularized layer alignment with the ability to register multiple tissue sections by comparing with more sections than just the adjacent section.
- Threads cache arrays and reuse them when appropriate.
- 'j' triggers "Adjust min and max (selected images)".
- Numerous big and small fixes.
2012-04-10 - 0.9h released
- Mipmaps are now by default generated using area downsampling, by which four adjacent pixels are averaged into one pixel of the next image in the pyramid of powers of 2. This method is many times faster than the old default method (gaussian downsampling) while delivering reasonably good results.
- Removed now obsolete methods to generate mipmaps, in particularly nearest-neighbor, bilinear and scale area averaging. All three were implemented using the AWT Toolkit hardware-accelerated methods, but they are considerably slower, and of equal or worse quality, than the new area downsampling method.
- New default file format for storing mipmaps: .rag, which saves the image data as a raw 8-bit array, and the alpha mask of the mipmap, if any, using a gzipped stream attached to the file. This format is many times faster than the old defaults, .jpg, to the point of making many operations interactive (such as adjusting the brightness and contrast of a bunch of selected images).
- Saving mipmaps in JPEG format is bit faster.
- The Coordinate Transform of an image is now always paged, rather than stored in RAM. This means each Patch gets a unique ID for its coordinate transform, from which it can reference the file. When saving to XML, the default is to write the coordinate transform into the XML file just like always. There is now the possibility of saving the XML much faster by choosing "Project - Advanced - Save as ... without coordinate transforms". Upon loading this stripped XML file, each image Patch is checked to confirm that the file corresponding to the ID of its coordinate transform exists.
- New data inspection mode "Display - Inspect image mesh triangles". Click and drag over an image to visualize the triangles used to deform the image at that point. These triangles are only present in images that have coordinate transforms.
- Alpha masks now live in files with unique IDs, with the image patch storing the ID to its corresponding file. This system enables undoing and also closing the project without saving, preserving the correct pointers to the correct alpha masks matching with the mipmaps.
- Both alpha masks and coordinate transform files may now become stale after altering them more than once. The new command "Project - Advanced - Delete stale files..." will inspect the currently opened TrakEM2 project and find out which files are stale, and delete them. Be aware of other XML files created with "Save as" from the same project, which may be using some of the alpha mask files and coordinate transform files that the currently opened XML file considers stale! Use this advanced command only if you understand the consequences.
- Fixed export of tiles for CATMAID; in particular, fix respect the alpha masks when exporting directly from the original images.
- Alpha masks are now finally included in the undo commands.
- The command "Import - Import from text file..." now offers the option, in the dialog, to hide the border of the image with an alpha mask.
- Fixed error when exporting color tiles for CATMAID. Thanks to Bjorn Quast for reporting.
- Fixed error generating mipmaps for LUT images (aka ImagePlus.COLOR_256).
- Numerous small edits to improve performance.
Thanks to Stephan Saalfeld for implementing the new area downsampling method for mipmaps and all other related adjustments, and for pushing for the alpha masks to be undoable and never stale. Thanks to Stephan Preibisch for lots of help with implementing integral images in ImgLib. Thanks to Darren Wong for identifying an error in that prevented the Neurite Identifying Tool plugin from running.
2011-12-24 - 0.9f released
- New command "Adjust images - Adjust image filters (selected images)", which provides an editor window for filters in Patch (an image), including all ImageJ rank filters that operate with a radius (median, mean, min, max, ...), Gauss, CLAHE, invert, normalize, subtract background (with the rolling ball algorithm), and LUTs (color look-up tables; most useful for composing 16-bit and 32-bit images of the many channels obtained with array tomography using the 'Add' composite rule of a Patch).
- Added a "Selection - Select all that match..." command, with filters for regular expression matching, visibility, and type.
- Better export for CATMAID via "Export - Make flat image" and Save for web.
- Exposed GUI methods for colorizing treeline and areatree by node and branch centrality.
- Minor fixes.
2011-11-20 - 0.9e released
- Created an emergency 'red phone': if you forget to set the auto-saver in "Project - Properties" and the Fiji GUI freezes, open a terminal and launch "telnet localhost 29391" and write "save", "saveas", "stream" or "quit" commands. "save" will save the project overwriting its current XML file. "saveas" saves to a new XML file in the same folder of the old, if any; otherwise to the user directory (generally the directory from which fiji was launched). "stream" will print the XML representation of the TrakEM2 project to the telnet terminal. "quit" closes the telnet session. This feature will let you save your work, avoiding losing unsaved work.
- Fixes to display threads to ensure better cleanup when closing a display.
- When control-clicking on the 3D window, a 2D display is chosen for the right project rather than just the front one.
- Aligning and montaging with elastic now respects locked and linked images.
- Command "Import - Import from text file" can now take either 4 or 9 columns, when 4 it's the old path,x,y,z, and when 9 it adds width,height,min,max,type. (If any of the additional fields is expressed with a dash '-', the original file is loaded and the field read from the file.) Additionally, images are not loaded anymore just to read some properties; the LOCI library to read the header is used instead.
- Fixed lack of painting of the treeline or areatree on the review fly throughs.
- Command "Export - Flat image" now has clearer fields, and allows exporting to JPEG, PNG, TIFF or zipped TIFF, and to set the tile dimensions when exporting for CATMAID.
- Improvements to elastic alignment and montage, thanks to Stephan Saalfeld.
- Fixed errors in the new Display 3D window that could occasionally lead to freezing the whole GUI of Fiji.
- New command "Open original image" when an image is selected (same as shift+d). This opens a copy of the currently selected image as an independent image in ImageJ.
- New command "Project - Create sibling project with retiled layers" which creates a new XML project based on the current one, where images have been retiled so that each image is expressed with a new, snapshotted image and a translation-only affine. This reduces the size of an XML enormously when images have complext non-linear transforms, and speeds up browsing a project with massive image tiles. Objects from the "Project Objects" tree can still be sent back and forth from the original XML file by opening both and using the "Send to - Sibling project" command in the right-click menu.
2011-10-15 - 0.9d released
- Improved the 3D window GUI with a column of panels for selecting, editing the color and the transparency of 3D objects, as well as deleting batches of them that match a regular expression, or assigning random colors (which helps a lot when visualizing dozens or hundreds of overlapping neuronal arbors).
- Added command "Project - Create sibling project with retiled layers", which exports all images into a new project with simple, translation-only tiles (losslessly compressed with ZIP) and also all the objects present in the "Project Objects", and the floating text labels. The layers of the new project retain the same IDs, and the canvas has the same dimensions and calibration. These two projects are thus siblings, and objects from the "Project Objects" tree can be sent from one another "As is", without transformations. The key advantage is in a much reduced XML file size (which can grow huge when performing elastic registrations on hundreds of thousands of image tiles), and also much smaller image source files (which circumvents current speed limitations regarding large images such as 21k x 21 k STEM images). The bit range of the original images is preserved for best quality and to retain nearly all the information present in the original images, i.e. right-click with the select tool on an image and then shift+d will open a tile with almost the same data as in the original images, with the full bit depth. Thanks to Stephan Saalfeld for implementing the pixel transfer to 16-bit while preserving the min and max of the images.
- Very large images (like 21k x 21k) are now handled much better; only waiting time is for loading the file.
- Profile objects can now be transferred with "Send to - Sibling project" in the right-click popup menu for "Project Objects".
- Added API methods for better readout and manipulation of Treeline, AreaTree and Connector objects.
- Flood-fill operations on areas will be consistently fast from now on, but the flood is restricted to the field of view (which is advisable in any case). Before, the floood operation was dependent on the number of areas present in the section. Requested by John C. Anderson.
- Added menu item "Transform - Set coordinate transform of selected image to other selected images" and also "layer-wise". A checkbox enables selecting only the lens deformation model. Requested by Richard Fetter.
- The mesh resolution with which images are transformed when applying non-linear transforms (such as moving least squares transforms) is now adjustable. Defaults to 32x32, which is suitable for images up to 2048x2048 pixels. For larger images, increase the resolution accordingly; the default is at "Project - Project properties", and for every image the value may be adjusted using the menu "Transform - Adjust mesh resolution *".
- The generation of mipmaps defaults to a single thread. This parameter is adjustable in the right-click menu on the canvas, at "Project - Project Properties...". Extensive explanations on how to best fine-tune mipmap generation here.
- Fixed a number of small errors. See the git log.
2011-09-06 - 0.9a released
- Elastic image registration now available for montaging images within a section (a "layer" in TrakEM2 parlance), and for registering a series of layers with one or thousands of image tiles in each. The method is extremely robust to noise and image deformations, and thus ideally suited for aligning serial section transmission electron microscopy series. Thanks once more to Stephan Saalfeld from the Max Plank Institute for Molecular Cell Biology and Genetics.
- To accomodate the new elastic image registration the menu "Align" of the right-click popup menu of the canvas window has been reworked. Each modality ("Align layers" or inter-section registration, and "Montage images" or intra-section montaging of image tiles) has now a choice between phase-correlation, SIFT-based linear registration and elastic montaging based on block-matching and spring meshes.
- Save as and read from ".xml.gz", that is, compressed XML files.
- Added column of origins to the tables that list the incomming and outgoing connectors of a treeline or areatree.
- Exporting arealists as labels in a tiff file is much, much faster. Requested by Martin O'Reilly.
- Created an image preloading mechanism that loads images within the field of view but in the next or previous sections. Accessible in the "Display - Properties..." menu of the canvas right-click popup.
- Image preview (the loading of smaller images that appear pixelated until replaced by the proper images) can now be disabled in the right-click menu "Display - Properties..." Disabling it will improve actual layer browsing speed.
- For treelines and areatrees, used to model for example the skeleton of an neuronal arbor, "shift+f" toggles the visibility of text tags and "alf+f" the visibility of arrowheads.
- Fixed critical problem: the regeneration of mipmaps for very large collections of images was running out of file handles.
- The number of threads used for generating mipmaps is now a property, accessible under "Project - Properties..." in the right-click menu. Use a low number when processing images over 4096x4096 pixels.
- Improvements in the Search dialog: the project to search in is now choosable from a pulldown menu, and the right-click menu over the results enables showing the object in 3D and opening its lists of nodes when it is a treeline or areatree.
- In the Object Tree, "Send to - sibling project" now suggests a landing parent node that has the same title as the parent node in the current Object Tree, or the first item if none match.
- Add a warning to the confirmation dialog for joining trees when the tree that will remain is not the largest of the lot.
- Many little fixes.
Thanks to Stephan Saalfeld for his enormous contribution and to Martin O'Reilly for his input and testing.
2011-05-15 - 0.8p released
- Select an object in the canvas, then push 'L' to add a new connector. The new connector is added to the Project Tree as a sibling of the selected object, or as child of a sibling; whichever is possible. If neither can accept a child of type "connector", then the connector is not added. You must add such child first yourself in the Template Tree by using the right-click popup menu.
- Fixed an error in the measurement of the diameter of an arealist, and potentially in the volume as well: all layers were assumed to have the same thickness. Additionally, the measurements now include the center of mass computed as the spatial mean of all countour points.
- Added "Node - Collapse nodes of children nodes" to the popup of the Project Tree as the means to close lots of subnodes to unclutter the view.
- Scrolling through layers is a bit faster thanks to improved updating of the panels listed in the tabs of a display.
2011-04-12 - Open Connectome Project hosts an ssTEM image data set online with CATMAID
The Open Connectome Project is hosting an ssTEM image data set of 1200 serial sections from Bock et al. (Nature 2011). The data was analyzed with TrakEM2, using the Treeline and Connector data types to reconstruct neuronal arborizations and their synapses of the mouse visual cortex.
The image data set is deployed online with CATMAID, the Collaborative Annotation Toolkit for Massive Amouts of Image Data. TrakEM2 is able to export its image data set to CATMAID with "Export - Flat Image" (with "For web"), and Treeline, AreaTree and Connector instances are currently exported with custom scripts.
2011-03-22 - 0.8n released
- New menu item "Export - NeuroML...". A choice decides between export to MorphML (the anatomy of the arbors only) or NeuroML (the whole network with anatomy and synapses), for the selected trees or all trees. The exported NeuroML validates to Level 3.
- Display menu: renamed "point" to "node" for Tree-related menu items, regrouped "Mark" and "Clear Marks" under a "Nodes" menu that also has the "Color..." (shift+c), and added menu item to change the radiuses of Treeline and Connector (the 'o' keybinding), and two new ones to remove all tags from all selected trees of a specific tag from the active tree, all selected trees, or all trees (where "tree" is any of Treeline, AreaTree or Connector).
- Added "Measure - Shortest distances between all pairs of nodes tagged as..." for Treeline and AreaTree popup menu, which enables custom measurements such as the length and diameters of spine necks labeled with starting and ending text tags. Thanks to Nuno da Costa for explaining to me how useful this feature would be.
- Added text field to layer alignment dialog to work on images that match the specified regular expression. Thanks to Daniele Oberti and Mortiz Kirschmann for showing me how this would be useful for aligning multiple color channels independently in array tomography, where multiple color channels (each channel represented by overlay images with a different LUT) overlay electron microscopical micrographs.
- Added "Blend (layer wise)" and "Blend (selected images)" to menu "Adjust images".
- Added undo/redo to move up/down/top/bottom.
- Removed 'w' as a key binding to close the display window.
- Minor fixes for updates to GUI elements.
- Minor fixes in keybindings related to Undo/Redo.
2011-03-05 - 0.8m released
- TrakEM2 0.8m is part of the new Fiji Madison release of Fiji.
- The field of view for whole-layer to whole-layer alignment can now be restricted to an ROI.
- Added checkbox to "Export - Flat Image" dialog to export images for web from the original (transformed) images, as opposed to the jpeg mipmaps. Avoids one jpeg-ing step, results in higher image quality.
- TrakEM2 can now run properly without mipmaps (the tradeoff is large memory consumption which may result in slower browsing across layers). See a scripting example taking advantage of it.
- The Layer Tree reports each layer's z coordinate in calibrated units and in pixels.
- The display window has a more informative title. The depth is now included and the layer name is avoided if it defaults to the z coordinate position.
- Loading images from a stack avoids loading the whole stack for each slide. This was an error introduced a few months ago.
- Fixed resampling of pipes for 3D display. Reported by Volker Hartenstein.
- Fixed layout issues with the display window.
- Added ability to interpolate areas in sections that don't have them. For both AreaList and AreaTree. Requested by Graham Knott and Bjorn Quast.
- Fixed visualization of layers as slices in the 3D Viewer.
- AreaWrapper: fix deadlock when "adding" for an AreaTree. Reported by Dan Bumbarger.
- Updated the live filter to the newer and faster CLAHE.
- Prevented potential error related to the new file grouping mode of LOCI bio-formats.
- Fixed an error in the undo system for trees.
- Improved graphics of treeline, areatree and connector.
- Added command "Resize canvas/LayerSet to ROI".
- Fixed an error that occasionally resulted in images or other obects disappearing when deleting one or more objects.
- Fixed an error in the generation of a 3D tube between two nodes of a treeline that have identical x,y position.
- Added means to remove alpha masks for selected images or for all images in a range of layers.
- Fixed an error related to the file path repair window.
- Fixed error in Selection.selectAll: one now always remains as the active object.
- The wand tool can now be used for filling areas. Requested by Xavier Heiligenstein.
- Fixed improper display (all black) of 16-bit and 32-bit images when adjusting their min and max interactively.
- Fixed error with contrast adjustment, where some images got their histograms corrected twice.
- "Export - AreaList as labels" now ensures constant order, runs in parallel (one slice per thread), and avoids using ShapeRoi, which is unreliable for areas overlapping the edges of the image. The Imglib's ShapeList image is used instead.
- Fixed an error with treeline and areatree nodes, where some nodes seemed to disappear from the display but where saved just fine to the XML file.
Thanks to Volker Hartenstein, Graham Knott, Bjorn Quast, Xavier Heiligenstein, Stephan Saalfeld and Dan Bumbarger for fixes and suggestions.
2010-11-16 - 0.8l released
- Control+click on an object in the 3D Viewer will set the current 2D Display at that location. Thanks to Mark Longair.
- Added measurements for individual areas for types "area list" and "areatree". A second table pops up listing the calibrated area measurements. Requested by John Anderson and Rita Bopp.
- Fixed live filter to work as well on cached images. Reported by Dan Bumbarger
- Fixed error in moving areas with 'm'.
- Fixed error in copying areas with 'c' and 'v'. Reported by Graham Knott.
- Areas now have a separate adjustable property in the "Display - Properties..." dialog to enable/disable color cues for them.
2010-11-03 - 0.8k released
- Added checkbox to "use red/blue for color cues" in "Display - Properties..." dialog. When unchecked, a ball that spans over multiple sections will paint with its color in all sections, as opposed to in red in previous sections and in blue in the next sections. Requested by Graham Knott.
- Minor fixes to graphical interface.
- Search: allow application of action to multiple selection. For example, select a few elements and right-click and choose "Select in display".
- Fixed issues with updating display panels.
2010-09-24 - 0.8i released
- Change in how nodes are added to treeline or areatree: click on an existing node first, or go to it with 'g', so that the node is set as the "receiver" (and paints in green). Then any click to add a node is added to this receiver node. Upon adding a node, it becomes the receiver. Upon deleting a node that was the receiver, its parent or its child (when root) becomes the receiver. Branching is done by setting a node as the receiver and then adding further nodes. This new setup avoids the uncertainty of where is a node added; before, the distance to the nearest node in calibrated world units was computed, but the setup was fragile, particularly with uncalibrated stacks.
- Tree node tags are added to the receiver node if no other node is under the mouse, and the receiver node is within the field of view. Same for adjusting the confidence of an edge.
- Fixed an error in adding an ROI to the alpha mask of an image, which also affected the splitting images with polygon rois.
- Fixed an error in duplicating a treeline as an areatree or viceversa. Thanks to Mark Longair for reporting.
- Tree review stacks will paint the tree of interest as if it was selected: with handles. Requested by Casey Schneider-Mizell. This helps in keeping track of which of the many traced trees in the review stack is under review.
- The Project Tree no longer jumps to a node whose title starts with the character of the key pressed. Rather, the command is just run.
- Better painting of treeline and areatree nodes. Slab nodes are now painted as a small circle.
- Improved overall flow of GUI-related commands and GUI component updates.
- More robust mipmap generation: re-run when the alpha mask has changed meanwhile.
- ... and some minor fixes.
2010-09-16 - 0.8h released
- Added live filter with CLAHE, min/max and invert options. See the "Live filter" tab in the display window. Use the scroll wheel over the text fields to change the values, or type them in. The filters operate over the RGB image painted on the canvas, not on the original tiles.
- Added "Export - Connectivity graph..." command, to export the graph as defined by the Connector objects. Offers means to filter the kinds of elements (images, treelines, arealists, etc.) to include in the graph. The output is in SIF format, to be imported for example in Cytoscape, and as a simple XML.
- Aded "Adjust images - Split images under polyline" command: draw a polyline ROI on the canvas and have the underlying images be split along the ROI into two parts. This is useful when the images present folds and would not montage well otherwise.
- Shape overlays may now be filled with a given alpha. See LayerSet.getOverlay()
- Added "Measure" submenu for Treeline and AreaTree, which enables calibrated measurement from the current node to the root, the marked node, or to any number of nodes with a user-chosen tag. The latter enables measuring distances from the soma to all labeled synapses in a tree, for example. Requested by Nuno da Costa.
- The manual align mode can now be undone.
- Minor fixes with the image cache, with duplicating treelines as areatrees, with joining areatrees, with brushing areas, and with repainting images, among others.
Thanks to Mark Longair, Casey Schneider-Mizell, Stephan Saalfeld, Nuno da Costa, Johannes Schindelin and Verena Kaynig for reporting errors and testing out new code.
2010-08-20 - 0.8e released
- Added ability to convert an AreaTree to a Treeline and viceversa. Select an instance, right-click, and the appropriate menu item appears.
- Fixed an error: when registering, the options for keeping the largest graph only and hiding or removing other tiles were being ignored.
- New feature: menu item "Display - Show layers as orthoslices in 3D".
- New feature: on a treeline, areatree or connector node, push 'o' to adjust the node radius. Asks wether to apply the operation to that node, the downstream slab, or the entire downstream subtree.
- New feature: on a treeline, areatree or connector node, push 'shift+c' to adjust the node color. Asks wether to apply the operation to that node, the downstream slab, or the entire downstream subtree.
- Write less XML data when redudant.
- Fixed adjusting edge confidence with shift+wheel for AreaTree.
- Fixed error renaming an element of the "Project Objects": if the name was left blank, it could result in a null pointer exception when saving the XML file.
- Fixed error: inability to fill a hole in an area of an AreaTree, with shift+click.
- Fixed error in creating subprojects.
- Limited review stack threads to a maximum of 4, and improved performance of review generation for Treeline and AreaTree.
- Avoid listing review tags as regular tags for adding/removing tags with VK_R.
- Reworked logic of saving the XML file to a temporary file, and then renaming it. Thanks to Mark Longair.
- Numerous fixes to brushing areas for AreaTree and AreaList. Thanks to Mark Longair for some fixes.
- Better usability of menu options for generating or removing treeline/areatree reviews. The tabular view now has an extra column for listing review tags, which are garanteed to be numerically ordered. Thanks to Casey Schneider-Mizell for suggestions.
- Now removing review stacks and tags of: the parted subtree; the joined tree; the tree for which review stacks are being generated again.
- Fixed an error in Treeline 3D mesh generation.
- Upon detecting a crash, TrakEM2 now merely informs the user with a 'ok' dialog. The dialog indicates how to regenerate the mipmaps if they are wrong in any way. This avoids having to decide "yes/no". Use right-click popup menu "Project - Regenerate mipmaps" when needed.
- Improved image registration thanks to Stephan Saalfeld, who added a filter to reject constant background patterns during SIFT-based image alignment. The minimal absolute number of inliers (corresponding features between two image tiles) is now editable as a parameter, and defaults to 7.
- Numerous fixes and speed ups to "Set preprocessor script" functionality. Thanks to Stephan Saalfeld for pointing out failing conditions.
- Improved transformation of segmentations when registering the underlying images, thanks to Stephan Saalfeld. The transform mesh, which estimates the transformation, is now able to transform points outside the mesh, which is necessary to cope with floating-point inaccuracies. Now no piece of mesh overlaid on an image is ever left behind when registering images that have heavy non-linear transformations.
2010-06-25 - 0.8d released
- Parse XML much faster: don't validate--TrakEM2 performs all sorts of integrity checks in any case.
- Parse XML faster: don't iterate over keys of the attribute map. These keys are known exactly. This fix saves lots of iterations.
- Fixed an error with improper repainting of the canvas on occasions. Thanks to Mark Longair for reporting.
- Fixed an error with setting preprocessor scripts to images, which reveladed an error with the new image cache. Thanks to Stephan Saalfeld for reporting the error.
- Strengthened access to the image cache to never ever block.
- Fixed an error in removing an emtpy object.
- Improved the robustness and logic of the 'front' Display, so that Display.getFront() correctly returns the last activated display. Thanks to Alexander Seitz for reporting and testing.
- Simplify "import grid" and "import sequence as grid": offer phase-correlation only as an image registration method for intra-layer montaging. SIFT is available in all its intra- and inter- flavors in the "Align" menu.
- Removed superfluous dialog poping up for aligning images with phase correlation when importing and aligning simultaneously. Thanks to Ignacio Arganda for reporting.
- Fixed error with undo for adding/removing an object.
- Fixed error with joining AreaTree instances, where the areas of the joined tree would end up at the wrong position.
- Fixed errors with the quad-tree for fast position-based object lookup system. It's faster and more correct, and autocorrects itself if there was an unexpected error when removing objects.
- Fixed the logic of 'c' for copying the active Patch image to ImageJ's internal clipboard:
- c: copy transformed with affine and coordinate transform, if any.
- shift+c: copy transformed with coordinate transform.
- shift+alt+c: copy original image.
- Fixed infinite error reporting loop when attempting to open color images that cannot be found.
- Added checkbox "prepaint" in Display properties dialog to enable/disable the prepainting of images.
- Better repainting of the Display's toolbar panel.
- Use a maximum 4 preloading threads. More don't preload images faster. This allows for considerable concurrent loading and repainting, which translates as faster layer browsing.
- Fix problem with exporting tags in XML: was duplicating all entries. Thanks to Mark Longair for reporting.
- Spell-checked various source code files. Thanks to Davi Bock.
Thanks to Mark Longair, Davi Bock, Ignacio Arganda, Stephan Saalfeld and Alexander Seitz for reporting errors and testing out new code.
2010-06-02 - 0.8a released
- Reworked the image cache for better speed and memory management, which translates as faster layer browsing, panning and zooming.
- Annotate any selected object in the built-in editor in the "Annotations" tab.
- Implemented scale-free marching cubes for 3D mesh generation of very large meshes, using the ShapeContainer of the imglib. This means meshes will look as fine as desired, trading off computation time only (and not really RAM anymore).
- Added feature to send a node of the Project Tree to a sibling project that is simultaneously open. This enables, for example, multiple researchers tracing neurons in the same image volume and then putting them all together. Nodes may be sent "as is" or transformed along with the images over which they sit. See the right-click popup menu in the Project Objects tree.
- Added ability to store mipmaps as PNG, TIFF or JPG (the default), choosable at "Project - Properties ..." dialog. As requested by Clay Reid. PNG is recommended for confocal images.
- Added tree review framework, which generates fly-through stacks from each end node to branch node, branch node to previous branch node, and finally to root. Access them via the Node tabular view.
- Added Review - View table of incomming/outgoing connectors for a Tree. So that reconstructing the upstream and downstream targets of a neuron can be systematically. Double-click on a table cell to go to that origin or target point.
- Connector are now also trees, and can have text tags on their nodes and confidence values for their edges, and can be selected with mouse over their nodes and pushing 'g' just like trees.
- Manual landmarks for manual layer alignment are now exportable and importable via the right-click popup menu while on "Manual layer aligment" mode.
- Stephan Saalfeld improved the automatic feature extraction library (that he wrote), which improves image registration in TrakEM2.
- Reduced memory footprint of tree nodes.
- Reworked buckets, i.e. the quad trees for fast object lookup based on a 2D area. Among other benefits, repainting is now faster.
- Color cues for trees, connectors, ball, pipe and polyline are now configurable to any number of layers before and after the current layer. See the "Display - Properties..." dialog in the canvas' popup menu.
- More concurrent phase correlation montaging thanks to Ignacio Arganda and the imglib by Stephan Saalfeld and Stephan Preibisch.
- Fixed spurious error in painting an area. Reported by Volker Hartenstein.
- Fixed '[' and ']' navigation of tree nodes.
- Ensure new template thing type names are compliant with XML: must comply with regular expression ^[a-zA-Z][a-zA-Z0-9_]*$ -- reported by German Koestinger.
- Fixed error in logic of "Export - Arealists as labels" which was reversed. Reported by Bjorn Quast.
- Now locked images are respected as fixed tiles for multi-tile montaging.
- Parsing a large XML file is now substantially faster.
- Saving the XML file is now faster, particularly for XML files of several hundred megabytes in length (from a minute to mere 5 seconds again for a 250 Mb .xml file). Thanks to Steve Butterfield who identified the source of the problem.
- XML file is now saved first to a .tmp file, then the old .xml is deleted, then the .tmp is moved to the proper .xml. This avoids corrupting the .xml when the JVM crashes in the middle of a file saving operation (particularly in MacOSX). In Windows OS, this feature is not available.
- ... and numerous small fixes and plenty of speed-ups.
Thanks to German Koestinger, Alexander Böhm, Dan Bumbarger, Davi Bock, Bjorn Quast, Ignacio Arganda, Kenny Floria, Stephan Preibisch, Stephan Saalfeld and Jong C. Rha for reports, code, testing, and offers to buy buckets of beer.
2010-03-26 - 0.7q released
- Added numerous features to Treeline, including split/join, reroot, confidence values for connections between nodes in the tree, ability to go to the root node, the last added node, the last edited node, any number of regex-searchable text tags in each node (like "TODO", "Unfinished End", "synapse", ...) and also a tabular view window that lists all nodes and can sort them for X,Y,Z,confidence,radius, and text tags. The graphics of Treeline have been considerably beautified. Many thanks to Davi Bock and Wei-Chung Allen Lee for brainstorming ideas and testing.
- Added AreaTree, a new segmentation type identical to Treeline but with 2D areas on each node instead of radiuses.
- Added "Export - Fly through selected Treeline" which generates an image stack from the root node to a marked node. Mark a Treeline or AreaTree node by double-clicking it or via right-click and "Mark".
- Added 2D radiuses to Connector, shift+drag the points to extend the radius. Any object within the radius will be related to it.
- Individual balls within a Ball object now paint as sections, given their diameter. So when color cues is on, they may paint into as many sections as they intersect.
- Color cues is now controled by options in the "Display - Properties" dialog.
- Smooth zoom with control+scroll wheel (command+scroll in MacOSX).
- Layer and multi-tile montaging is now more interrptible.
- Smooth brushing for AreaList and AreaTree, even for very complex brushing.
- Multi-layer mosaic now has different feature correspondence weights for intra- and inter-layer image tile correspondences.
- "Align multi-layer mosaic" finally uses graph-based pre-alignments to reduce the number of cross-section patch-to-patch comparisons. Thanks to Stephan Saalfeld.
- Image montaging with phase correlation is now parallelized and uses newest phase-correlation library from Stephan Preibisch. Thanks to Ignacio Arganda.
- New Brush tool for painting AreaList and AreaTree.
- Improved memory management.
- Improved mipmap generation speed.
- Segmentations are now transformed with the images when re-registering them.
- Objects from the "Project tree" can be sent, as copies, to the "Project tree" of other open projects.
- Any new Displayable gets the color of the last color set to a Displayable. After suggestion from Wei-Chung Allen Lee.
- Status bar reports mouse position on mouse move, but not pixel values if tool is other than the "Select" tool. Avoids loading images unnecessarily.
- Fixed an error that made the original image appear behind the transformed when deforming a lot in interactive non-linear transform mode.
- Fixed an error in lens distortion correction: was not respecting the chosen parameters and used the defaults! Fixed by Ignacio Arganda.
- Fixed calibration of exported snapshots; by Stephan Saalfeld.
- Fixed error exporting AreaList as labels.
- Call calculateBoundingBox for an Area after all other tasks on mouse release. Fixes bug #146, reported by Alex Böhm
- Fixed "Select all by type": text labels work, connectors have been added, and reorganized menu by alphabetical order.
- When saving the XML file, write first to a .tmp file and then, on success, move that file to .xml. Avoids potential .xml file corruption when the JVM crashes in the middle of a file writing operation. As suggested by Björn Quast.
- Added new autosaving feature. Turn it on in "Project - Properties" by setting a time interval (in minutes) larger than 0. Defaults to autosaving every 10 minutes.
- Removed autosorting, which was interfering with ImageJ's VirtualStack. By Larry Lindsey.
- Changed StitchingTEM to use the phase correlation from imglib. By Ignacio Arganda.
- Fixed "Send linked group to" some layer.
- Removed bogus double calibration in Profile surface measurement
- Fixed mixed usage of image borders for masking them in Patch.
- Better "Show centered" functionality thanks to Davi Bock.
- Added "Transform - Remove rotation, scaling and shear" menu command, which removes affine parts of image transformations to preserve translation so that the center remains where it was.
- Added 4 entries to new "Select - Graph" submenu, to select objects related by Connectors.
- Numerous minor fixes, including better repainting of tree-like segmentations.
Thanks to Davi Bock, Wei-Chung Allen Lee, Stephan Saalfeld, Ignacio Arganda, Dan Bumbarger, Alex Böhm, Björn Quast, Larry Lindsey and Curtis Rueden for ideas, code and bug reports.
2009-12-14 - 0.7n released
- Simpler, more robust memory management system. Also enlarged minimally free memory requirements to 150 mb / CPU core.
- Replaced preloader threads: better, more granular and more parallel image loading.
- Added a TrakEM2 plugin system: see some docs here. Plugins will appear in the TrakEM2 menus and have hotkeys assigned to them.
- Added automatic enlarge-to-fit to all Display montage commands.
- Fixed error in autotracing of polylines: the Z was not correct.
- Small improvements to repainting machinery.
- Small fixes for contrast adjustment. More to come soon.
Thanks to Stephan Saalfeld for relentlessly reporting (and suffering) errors to the error tracker.
2009-12-04 - 0.7m released
- Added non-linear registration option to "Align layers". By Ignacio Arganda and Stephan Saalfeld. Uses bUnwarpJ in the background.
- Added image montaging using phase correlation (in addition to the existing feature-based registration), for selected images and for a range of layers. Works well when images are approximately layed down in a grid. Requested by Ignacio Arganda.
- Extended "Import sequence as grid" to take multiple sections, i.e. to split a list of image files into Z montages of X*Y images. Requested by Ignacio Arganda. Also improved image importing parallelism dramatically.
- Added Treeline, a new basic type to represent for example branched skeletons of neurons. Treeline can be re-rooted and split at any point via right-click menu on a point.
- Added Connector, a new basic type to represent one origin and multiple targets.
- Added look-ahead cache for faster browsing across layers. Preloads previous and next layers up to as many as specified in the project property "look ahead cache". Requested by Davi Bock.
- Added new contrast adjustment mode. Select multiple images, right-click and run "Adjust - Adjust min and max (selected images)". Changes the min and max dynamically for all images, and on pushing apply, regenerates mipmaps for all selected images.
- Reworked meaning of min and max in Patch XML. No longer using -1 as any kind of flag.
- Loader.getFlatImage uses a paint method that ensures there's always a proper image and not a tag indicating that the image is undergoing mipmap regeneration.
- Added "Align - Aling layers with manual landmarks" which replaces the old align mode. Now supports multi-layer alignment, not just 2 layers. Use right-click to access the apply/cancel menu. Works with the SELECT tool; the ALIGN tool has been removed.
- Added hotkeys to the Project Tree right-click menu entries.
- Added concept of reference layer to the "Align layers" dialog. Thanks to Parvez Ahammad for bringing the issue to my attention.
- Added static methods to create flat images of any desired by depth (8-bit, 16-bit, 32-bit, and RGB) to Patch class.
- Added ability to flood-fill an AreaList to the border of underlying images, if project property "flood fill to image edge" is true.
- Added new Tool tab to the Display, which facilitates the usage of the semiautomatic segmentation tools (PENCIL tool) for AreaList. Thanks to suggestions from Nitai Steinberg.
- Better and more consistent contrast enhacement, and better parallelization of its routines.
- Fixed potential fatal error on readinf a TrakEM2 XML file, which would result in the TemplateTree being empty or showing nodes for "ict_transform."
- Automatic contrast enhancement defaults to 0.4 % saturation like ImageJ does now by default.
- Fixed error in canvas repainting, in which images with composite modes other than default would not paint at odd magnifications. Thanks to Stephan Saalfeld.
- Fixed cache locking issues when releasing memory.
- Mouse over hidden images no longer tries to load the.
- Mouse over no longer reports pixel intensity for the PEN and PENCIL tools, to avoid loading images when just editing some data.
- Polyline now removes closest point with shift+control+click.
- Display3D behaves better: meshes are replaced when readded, and scheduled for addition when rendered by the thread pool.
- Jpeg I/O has been updated to use ImageIO, thanks to Mark Longair and Johannes Schindelin.
- Jpeg I/O now locks on each image file path to prevent potential loading of broken images, which forced their reload. Also avoids tagging some images as unregeneratable when it's not the case--there was a collision on the creation of the directories of mipmaps.
- Attempt to fix file path repair for Windows. Some may linger ... see bug #66. Help appreciated with testing.
- Added 'm' and "Measure" commands from ImageJ to measure selected objects.
- Added "Show current 2D position in 3D", which shows a magenta sphere in 3D where right-clicked.
- Fixed numerous reported bugs.
- Better stopping of tasks that use many threads.
- Minor fixes to AreaList and Patch.
- Improved image importing dramatically for "Import from text file".
- Numerous little fixes. See the whole log.
Thanks to Stephan Saalfeld, Ignacio Arganda, Mark Longair, Johannes Schindelin and German Koestinger for code, bug reports and testing.
2009-10-01 - 0.7l released
- Improved semiautomatic segmentation by fast-marching: there is a bounding box now that limits maximum growth, which is resizeable by shift+scrollwheel. The read out of the grown mask is faster, by scanning lines.
- Added lasso tool by Johannes Schindelin as part of the PENCIL semiautomatic segmentation of an AreaList. control+drag will run the lasso tool on a selected AreaList.
- Added layer composites on LayerPanel right-click menu. Some fixes to repainting on "Reset all layer [colors|alphas|composites]"
- Fixed error in filling alpha masks with 'f' using current ROI over selected image patches. This fix works around an error in java.awt.geom.Area.intersect(Area(Rectangle)) and in ij.gui.ShapeRoi.getMask().
- Fixes in exporting arealists as labels: only up to 255 for 8-bit (not 256; 0 is background) and proper cropping of the ShapeRoi to work around the ImageProcessor.fill(ShapeRoi.getMask()) error in ImageJ.
- Preventing AreaList from painting beyond srcRect, in a nice unobtrusive way.
- Fixed error in creating undo steps for renaming nodes in the trees and for adding new nodes or moving or removing them.
- Lens distortion model visualization now takes far less memory resources, thanks to Stephan Saalfeld.
- Reworked lock/unlock logic; now the flag is updated on the spot for all linked displayables. Otherwise, it doesn't scale at all.
- Improvemenets in the Display GUI logic.
- Fixed creation of subprojects; was broken since the introduction of the UNUId system. Also fixed the opening of a properly scaled canvas in the display for the new subproject.
- Better reporting on what the undo/redo command did, in the log window.
- Better repainting of AreaList after brushing.
2009-09-18 - 0.7k released
- Added new Stack data type, useful for overlaying confocal image stacks on serial section electron microscopy images. Setup landmarks (a node with only "ball" children, where each ball has a single x,y,z point) for both a project with a confocal stack and a project with serial section TEM, and use "Import - Import stack with landmarks". Useful as well for importing from confocal to confocal (by Stephan Saalfeld).
- Added new color composite mode, which is a property of each Displayable object (an image, a pipe, an arealist, ...). Select one, right-click and select "Properties..." and choose among normal, add, subtract, multiply, difference and color (YCbCr) (by Stephan Saalfeld).
- Added a deform option to the multi-layer mosaic image registration (by Stephan Saalfeld).
- Fixed a number of file path-related bugs for MS Windows.
- Fixed creation of subprojects. Now arealists, pipes, ball, etc., are cropped to the desired layer range.
- More robust memory management.
- Greatly improved speed of putting objects in the 3D Viewer.
- Improved mipmap regeneration queueing.
- Numerous small fixes and improvements.
Thanks to Stephan Saalfeld for developing numerous features and bug reports, and German Koestinger for bug reports and testing.
2009-08-27 - 0.7j released
- Improved lens distortion correction thanks to Stephan Saalfeld. See this and this.
- Added paint modes to AreaList: allow overlap, exclude others and erode others. Choose the radiobutton under the tools in the Display when using the PEN tool to brush in an AreaList.
- Stephan Saalfeld fixed bug 71.
- Not showing annoying import stack dialog when it's clear which stack is to be imported. After suggestion/reminder from Christian Niedworok.
- Added a reverse command to Pipe. Pipe also paints a number '1' next to the first point, to disambiguate pipe direction.
- Added surface (lower and upper bound estimates) and maximum diameter measurements to AreaList, after request from Javier Cabrera Chaves. See arealist measurements for all details.
2009-06-26 - 0.7i released
- Added fast marching region growth for semiautomatic segmentation. Needs one-click of the pencil tool on a selected AreaList. Uses Erwin Frise's Level Sets library. Will run a bandpass filter by default--enable/disable filters at right-click popup menu "Display - Adjust fast-marching parameters..."
- Added Transform submenu, with affine and non-linear options. The affine mode is the mode that up to now was imply called "Transform" mode. The non-linear transform mode runs on a MovingLeastSquaresTransform with an arbitrary number of points. Add points with shift+click, remove them with shift-control+click. Drag the points to deform. Best used for small deformations, in combination with layer coloring (i.e. seeing the next layer in red and the current in green, for example.) The new manual non-linear transformation mode is the work of Stephan Saalfeld.
- Speeded up importing segmentations (a.k.a. labels) from tif or amira files enormously (about 75x), by doing line scans and a smarter object updater.
- Use golden angle for advancing in the hue axis for the generation of maximally different colors for imported labels from tif or amira files. Thanks to Stephan Saaleld.
- Added ImageJ toolbar to the Display, fully synchronized with ImageJ's.
- Added a grid overlay to the display, via right-click menu "Display - Grid Overlay". In calibrated units.
- Fixed improper functionality of the 'eye' visibility toggle checkbox for ZDisplayable.
- Added Overlay to Layer and LayerSet, for painting non-persistent Shapes on top of the canvas. Set them via scripts.
- Fixed undo for merging arealists
- Import image by drag and drop now doesn't wait on mipmap generation.
- Fixed ERROR in storing the file path when drag'n'drop images, was relying on concurrent-unsafe variables.
- Fixed lack of updating of navigator srcRect when resizing a Display frame.
- Fixed Polyline repaint errors.
- Restoring preview functionality of color and alpha sliders in adjusting the properties of a Displayable.
- Align will not accept models with less than 7 inliers. This is an empirically estimated reasonable value t oprevent hings from running wild (Thanks to Stephan Saalfeld.)
- Fixed error in extracting the image type information on constructing a new Patch from an image whcih is 8-bit-color: should have been ImagePlus.COLOR_256 type but was being stored as ImagePlus.GRAY8.
- Several corrections for getting the pixel value on mouse moved, particularly for 32-bit and 8-bit-color images.
- Fixed XML parsing of CoordinateTransformLists. They are recursive, not plain. (Done by Stephan Saalfeld.)
- Added methods to remove coordinate transforms for selected images or all images within a range of layers.
- Added methods to regenerate mipmaps specifically for a set of selected images (see right-clicl popup "Project - Regenerate mipmaps (selected images)".
- Numerous little fixes!
2009-06-05 - 0.7h released
- Added new eye, lock and link icons to the panels, for best ease of use. The lock icon shows the behaviour, i.e. if an object is locked because one of its linked objects is locked; not the internal locking state of that object. When unlocking any in a group of linked objects, all linked objects get unlocked.
- Added right-click "Tool" menu. The menu items show the keyboard shortcuts (F1, F2 ...) to change the tool.
- Added ability to invert colors in the RGB multilayer display mode. Right-click on the layer panels and tick the "Invert" checkbox in the menu.
- Now Search looks into properties and linked properties of Displayable.
- Doubled text space for Displayable panel label.
- Renamed "use_cross-correlation" to "registration" in the "import grid" and "import sequence as grid" dialogs, which will affect any macros.
- Upgraded snap functionality and the top-left import grid stitching rule to use the new mpicbg image registration library by Stephan Saalfeld.
- For developers: removed old Registration class, replaced entirely by AlignTask class methods.
2009-05-27 - 0.7g released
- Fixed undo problem affecting profiles.
- Usability fixes for Profile: shift+click on first point will close the profile if possible. No longer automatic profile closing when dragging the first point when more than one point exists. Use shift+c for explicit toggle of closed state.
- Select all won't select empty objects anymore.
- Internal fixes to the 3D display, should use less memory now.
- The "Align layers" and "Align multi-layer mosaic" setup dialogs now list layers with their index value as well, which it's easier to remember than the Z coordinate alone.
- Added locked state icon to each panel that holds an image, profile, arealist, etc..
- Replaced the checkbox by an eye icon to represent visibility.
- The navigator and the snapshot in the panel now represent much better non-squared dimensions.
- Fixed a bug that resulted in empty listing of "Patch" panels when opening a display stored in the XML file.
2009-05-15 - 0.7f released
- Fixed mesh generation problem with AreaList, for AreaLists that had at least one layer without anything painted on it, between other layers with painted areas.
- Fixed overlapping image blending, which was failing for non-rectangular images.
- Control+a for "select all" is now sensitive to visibility and ROIs.
- Fixed error in adding a new empty Displayable like and AreaList or a Pipe: since they had no data, they were not added to any bucket and thus could not be found for painting until the offscreen graphics were updated after adding some data (like the first painted area or first point.)
- Fixed generation of interpolated pipes from the comparator window.
- Added new feature "Identify with fiducials", to identify a Pipe or a Polyline relative to a set of reference Pipes or Polylines, like the "Identify with axes" currently works. To operate it, create a template named "fiducial_points", which should contain objects of any abstract type name which in turn contain a Ball object. The first ball within the Ball object is used as a fiducial point. If two projects of subsets of a project have fiducial points instantiated in the Project Tree, then those fiducial points rule over all sister objects (i.e. under the same parent node). The abstract fiducial point type names should be the same in the query and the reference sets in order to be considered corresponding points. To ease the pain, there is a new feature in the Template Tree popup menu to add template types from other open TrakEM2 projects, so that the fiducial_points template type and its children need only be defined once for any one type of comparisons you'd like to do.
- Profile no longer gets closed on dragging the first point, neither on shift+click on any point. Just use shift+c to toggle the closed state, or shift+drag the first point.
2009-05-07 - 0.7e released
- Fixed profiles 'b','n' for "Duplicate, Link and Send to [previous/next] Layer" functionality to select the new profile in the target layer, so that it can be immediately edited, its points deleted with 'x' and redrawn at ease.
- Fixed stack-index ordering of AreaList, Pipe, etc. Z-objects. So now Home/End and PgUp/PgDn keys will do the right thing with ZDisplayable objects. For very large and complex AreaList, sending the AreaList to the top will repaint it much more smoothly (faster).
- Extended AreaList fill-add (shift+click) and fill-erase (shift+alt+click) to look for delimited areas in other AreaList, in the intersection of other AreaList, or the combined areas delimited by several AreaLists.
- Undoing no longer zooms out (oops).
Thanks to Nuno da Costa for testing and bug reports.
2009-05-02 - 0.7d released
- More fixes for profile lists 3D mesh generation, trying to figure out proper orientation for open profiles.
- Fixed generation of area list 3D meshes; on occasions meshes could have been improperly generated.
Thanks to German Koestinger for bug reports and testing.
2009-04-23 - 0.7c released
- Fixed improper 3D rendering of profile lists in calibrated projects.
- Corrected 3D positioning of area lists after zero-padding for marching cubes-generation of meshes.
Thank you to German Koestinger and Amandine Bery for bug reports.
2009-04-21 - 0.7b released
- New feature: unique trakem2 folder for each trakem2 project. In the storage folder, a new folder with a near-unique universal id is created, in the form trakem2.1235413619289.1421048257.1414172153 . So each TrakEM2 has a unique project folder -- no more collisions of mipmap file names. When upgrading to the new TrakEM2 0.7a, the old project will be upgraded to the new folder system.
- New feature: layer color overlays and layer alpha overlays. While the current layer is as editable and functional as always, the new "Layers" tab in the display enables overlaying any other layer(s) as red and blue channels (the current layer is always green in color overlays), or alpha-blended on top. Only images from other layers participate of the overlay, not any segmentations or text. See the right-click popup menu on the listed layer panels. If you then scroll through layers (scroll wheel, or comma, < vs. dot, > like image, or the scroll bar under the navigator), the position of the colored layers relative to the current layer is preserved. This enables browsing the entire list of layers quickly to check image registration. See this video and this one
- New feature: lens deformation correction. The lens distortion correction plugin by Verena Kaynig has been integrated in the right-click popup menu. Select a few heavily overlapping images (recommended 50% overlap) and set the central most image, overlapped by all other images in all directions, as the active one (by shift-clicking it or selecting it last). Then apply the "Lens correction" and choose the range of layers into whose images you want the correction applied. This feature has been possible thanks to Stephan Saalfeld's generic transformations library.
- New feature: alpha masks for images. Select an image, draw a closed ROI on it, and push 'f' to fill with ImageJ's foreground color. Choose black for full transparency, and white for full opacity.
- New feature: support for coordinate transforms on images. Developed by Stephan Saalfeld, this structural feature powers the lens distortion correction and will enable spline-based deformations (such as from bUnwarpJ) and many more. This feature required development of non-rectangular image support, which is implemented as outside alpha masks for images, stored in the precomputed mipmaps.
- New feature: multi-model image registration, which means images may be registered now using translation, rigid, rigid plus isotropic scaling, and free affine. Support for elastic (via bUnwarpJ) and moving least squares is in the works. To remark that now the optimization step has been paralelized. The search for feature inliers can be done using a different model than the one applied to the image, such that for example a rigid model is used for the extraction of feature correspondences between images, but then an affine model built from the inliers is applied to the images.
- New feature: ROI editing of area lists, so that any closed ROI (rectangle, oval, brush, polygon, free roi and composite shape roi) may be used to edit the selected area list, using the 'a' for add and 'd' for delete/subtract. See this video.
- New feature: copying of current area for area lists, by 'c' copying and then 'v' pasting onto the same area list in another layer, or to a different area list in the same or any other layer.
- Area lists now repaint much faster when brushing them, by using a separate temporary area which is not merged to the current layer area until mouse release.
- New feature: brush interpolation for area lists, for both brushing and erasing. So no more disconnected brush paint circles in slow machines. Uses ImageJ's spline interpolation of the brushed path.
- New feature: object duplication, using right-click popup menu to "Duplicate" an image or a text label. For images, the source image file path is shared; only the mipmaps and all other properties (alpha channel, affine and coordinate transform, etc.) are unique for each copy.
- Now internal folders have a tree-like structure for file storage, avoiding limitations in the number of files per folder in legacy operating systems.
- Enhanced profile usage: when adding a new profile, it now defaults to the PENCIL tool for freehand drawing. Use 'x' to delete a path in a layer, and 'b' and 'n' to duplicate, link and send to previous and next layers, respectively.
- Corrected profile 3D positioning: the lowest Z layer was not being drawn correctly.
- Greatly improved area list 3D mesh creation: fixed an unintended translation, and much better mesh creation at high resampling values (avoiding disconnecting blobs as much as possible.)
- New feature: import/export labels from a tif or amira file, preserving the label id (the pixel intensity of the label in the image stack) for best interoperability. This feature builds on existing amira format support, greatly improving the import speed (thanks to code developed under request and with much felp from Raju Tomer.
- New feature: image blending. Select a group of overlapping images and right-click to "Blend". The alphamask will be non-linearly faded out to create a seamless display. Inspired by Stephan Preibisch's Stitching plugin and with much help from him and Stephan Saalfeld.
- New feature: undo/redo for all editions, not just for affine transformations. Alpha masks still not included in undo. The number of undo steps may be changed in the right-click popup menu, under "Project - Properties...", and may be increased from 32 (default) to 200 (maximum). For keybindings, ctrl+z and shift+z both undo, and ctrl+shift+z and alt+z both redo.
- New feature: propagation of manual transformation to all previous or all subsequent layers. Helps a lot when correcting the one or two layers that may not register well in full automated mode of hundreds of layers.
- New feature: align multi-layer mosaic, in which all tiles are considered as independent units and no assumptions are made as to their degree of connectedness within a section/layer. This enables the registration of, for example, long strings of pictures representing the various dendritic branches of the same dendritic tree, all images in between being absent. Thanks once more to Stephan Saalfeld.
- The canvas popup menu has been reworked a bit. New items to "Regenerate all mipmaps" and to "Flush image cache".
- New feature: select by type, in the canvas right-click popup menu "Selection" now includes submenu "by type", to select only images, or text labels, or area lists, etc., but only those visible. Also ctrl+a to select all (even hidden objects).
- Many, many, many bug fixes, including the impossibility to delete multiple objects unless selected in the same stack order as that of their container.
- The repainting machinery uses now less threads, and the number of repaints scales according to the processing capabilities of the CPU. Thanks once more to Stephan Saalfeld for his insistence in myself fixing this and for his suggestions on design.
- Adding an image by drag and drop now enlarges the layer set from lower right if necessary, to fit the image in full within the canvas.
- New feature: file path repair system, with a window opening to list all images for which an image file path didn't return a valid image, and asking for repair, with automatisms to fix other, non-listed images with similar file paths.
- The 3D Display, which uses the 3D Viewer, has been thoroughly updated: much faster and orderly mesh generation and insertion, and better support for transparencies for profile lists.
- And a myriad of other things.
Thanks to Stephan Saalfeld, Stephan Preibisch, Jean-Yves Tinevez, Bene Schmid, Johannes Schindelin, Raju Tomer and Jacques Pecreaux for many suggestions and all sorts of contributions, and to German Koestinger, Nuno da Costa and Isabelle Spühler for their infinite patience in testing, suggesting and reporting bugs.
2008-11-13 - 0.6a released
- New dependency: VIB_.jar, which includes the 3D Viewer, Simple Neurite Tracer, AmiraMesh, and many others. I STRONGLY RECOMMEND downloading Fiji: Fiji is Just ImageJ (with all jars and plugins bundled) for painless install and usage of TrakEM2.
- Semiautomatic neurite tracing using Mark Longair's Simple Neurite Tracer as a library. Works on the new basic type "polyline": just a sequence of points.
- "Identify with axes" now works indistinctively with Pipe and Polyline.
- Support for Kai Uwe Barthel's Volume Viewer / 3D Reslicer: set virtualization maximum dimensions in the Display properties dialog, and then run the Volume Viewer plugin (from Plugins - Volume Viewer) on an open Display.
- Support for Bene Schimd's 3D Viewer: just run the plugin on an open display ... requires Fiji. Reads out the virtualization maximum dimensions like the Volume Viewer above. Whatever is visible on the Display will be passed to the 3D Viewer as a virtual stack with maximum dimensions as specified.
- AreaLists can now be exported as a label stack, i.e. each AreaList is painted on an image stack with a unique pixel value. You can open this file in Amira, for example. Accessible from "Project - Export AreaLists as labels".
- Now exported stacks via "Display - Make flat image" include the calibration of the LayerSet.
- Now adding points to a Pipe considers the calibration when estimating if closer to the beginning or the end.
- Fixed transparency issues with Pipes.
- Moved the "Adjust - Homogenize contrast (selected images)" and the related layer-wise entry to use ImageJ's internal ContrastEnhancer (thanks to Marta Rivera for the suggestion -- ImageJ does it better, indeed!)
- Fixed logic that prevented adjusting the contrast of a single image.
- Fixed auto-selection of axes when switching project selectin in the "Identify with axes" functionality (now for both Pipe and Polyline). Alos fixed it to find the structurally closest set of axes in its ProjectTree.
- Now Display title prints with much less decimals in the calibration data.
- Reimplemented Pipe matching to forward transform the query data into the reference data, via the corresponding axes.
- Fixed missprinting error messages.
- Pipe and Ball now remember (separately) the last edited point radius, and is used for any subsequently added points from other Pipe or Ball objects.
- Enhanced "Search" to look for ids as well.
- AreaList now defaults to alpha 0.4 (i.e. 60% transparent) and to filled instead of outline. The newly improved repainting with VolatileImage makes repainting with transparencies ultrafast.
- Fixed potential deadlock with the log window.
- Fixed logic of the global optimization checkbox when registering floating image tiles together: it was set at the inverse of what was expected. Oops!
- Added options to sort matched Pipe and Polyline by any of the measured parameters.
- Added loads of new parameters listed in a Pipe or Polyline match.
- Added methods to save and open jpeg images with an alpha channel. Will enable non-rectangular floating images on the Displays!
- The ControlWindow will show if hidden after resetting GUI mode.
- Added options to the Project class to not open any displays specified in a TrakEM2 XML file.
- Lots of little fixes.
2008-08-25 - 0.5z
- Dimmed the background color of the trees.
- Fixed "Snap", which was not working properly.
- Fixed lack of proper task management for stitching with top-left rule.
- Fixed improper scale/rotate/translate on stacks and on objects with links in general, when doing so from the "Properties..." menu.
- Added more parameters to the pipe comparisons with axes, and a new sorting algorithm thanks to code and suggestions from Stephan Preibisch. It will improve even more very soon.
From here a big thank you to Marta Rivera for a very detailed bug report that enabled me to fix the task management problem in stitching with top-left rule.
Thank you to German Koestinger for feedback on nearly all bugs above.
2008-07-23 - 0.5y
- Fixed a HORRIBLE bug that made newly created projects save their image files as new files in the storage folder, the first time the project was saved.
- Parallelized tile connecting -- now the speed in image stitching will scale up with the number of processors in your machine.
2008-07-22 - 0.5x
- Fixed tile-wise registration dialog: now advanced dialog appears again. Oops!
- Removed annoying message dialog for mismatched calibration units in pipe comparisons.
- Also added median for all to all comparisons (static method).
- Adding plugins.config to Fakefile, for making jars that work outside fiji. If you are not using fiji, you should, particularly if you are a power user or developer. See also "How to keep TrakEM2 up to date with Fiji"
- Minor fixes to bucket system logic, fixing bugs affecting mostly ZDisplayable objects. Now when calling Bucket.updatePosition, the given Displayable is put in the bucket if not present.
- Rewritten Bucket.populate to cache and reuse bounding boxes, and to iteratively trim down the list of displayables to bucket in. Does wonders for bucket creation speed.
- Now shift+mouse moved on nothing will clear status bar.
- Added keystroke accelerator cues to Display popup menu items under "Move".
- Added to popup hidden commands for node "Move up" and "Move down"
- Faster layer browsing: layers now reuse a thread instead of generating new ones.
- Unhide no longer annoyingly zooms in.
- Fixed improper logic in Display.setFront(...).
- Minor fixes to repaint Selection. Also added generics to some method signatures.
- Fixed "Send to ..." parsing of the menu item command text.
- Align with landmarks now properly updates buckets. And so does Layer.apply(Class,AffineTransform)
2008-07-15 - 0.5w re-released
- Fixed improper mesh volumes for AreaList in the 3D Viewer.
- The view is no longer reset when adding a new object to the 3D Viewer.
- Some minor internals fixed - started transition to requiring ImageJ 1.41f, which implements Thread-locality (and thus safety) for the WindowManager's current image and the Macro options.
2008-07-10 - 0.5w released
- Added shift + mouse moved to list objects under the mouse pointer in ImageJ status bar.
- Fixed minor issues with empty text labels.
- Fixed improper background painting for text labels when not selected.
- Previous 0.5v jar did not contain the plugins.config: my apologies, from Fiji it doesn't matter... because fiji adds a different plugins.config to TrakEM2_.jar, placing "New Project" menu entries under "File - New...". Thanks to German Koestinger for the feedback on this issue.
2008-06-24 - Fiji integration
Since Fiji inception, TrakEM2 has been part of it. To install TrakEM2 and keep it up to date, pull fiji and TrakEM sources from the repositories. Follow how to keep TrakEM2 up to date with Fiji.
2008-06-24 - 0.5v released -- Janelia Farm Hackathon 2008 release
- Improvements to the measurement system, particularly for profile and profile lists.
- Now hiding objects also deselects them, except for "Hide selected."
- Transparency updates in a patch that is part of a stack now properly updates that of the corresponding volume or orthoslice in 3D.
- Fixed Display3D issues: color and transparency is now applied when edited in a regular Display. Also the mesh is deleted from the Display3D when deleted from the trees.
- Implemented big speed-ups in mipmap generation: now the Display - Properties popup dialog enables choosing between Gaussian (absolutely best, but slowest: about 3 times as slow as Bilinear), Bilinear, Bicubic and Nearest Neighbor (the last three hardware-accelerated. Beware of Nearest Neighbor: zooming out a lot on very large montages will result in essentially white noise.)
- Implemented a dispatcher thread for the mouse moved pixel value feature, to avoid loading images on the EventDispatchThread, and also overruning previous mouse moved operations that happened too fast for display.
- New image cache with LinkedList and HashMap which greatly improves search time -- thanks to Stephan Preibisch!
- Enabled tile-wise registration for the largest graph only, with hidding/deleting of images not belonging to the largest graph.
- Now after a first successful load, the path of an image is cached in the Patch object to avoid File.exists() calls and other overheads, which improves repainting speed significantly.
- Improved offscreen image repainting a lot by redesigning management of background areas.
- Implemented quad-tree search of Displayable objects in a layer -- i.e. much faster object search by point or ROI in a Layer, which improves repainting speed a lot in very large datasets.
- Implemented zoom-at-point with control + scroll wheel (just like in Google Maps.)
- Enabled 3 modes for snapshots: full, outlines and disabled (for best speed with very, very large datasets.) Check properties menu item at popup menu for display.
- Can no longer click-select objects that are not visible.
- Much faster ImagePlus cache. Replaced ImagePlus cache for a LinkedHashMap-based implementation.
- Now Pipe objects are selectable by clicking on the chuck of it that paints in the current layer when switching off color cues with the 'p' command.
- Saving/opening grey images as BufferedImage.TYPE_BYTE_GRAY for mipmaps of 8, 16 and 32-bit images -- no longer as RGB: file size is slightly smaller, but in memory images are 4 times smaller -- which means the cache can be 4 times as big in number of images.
- Some fixes for web export / mipmaps generation.
- Enabled magnification-dependent AreaList brush resizing: shift+scroll wheel will resize the AreaList brush at constant appparent screen size.
- AreaList segmentations are now screen size dependent, not image world size dependent -- you can now segment at very low magnification over very large image montages without incurring in gigantic segmentation data. So the magnification at which you paint with the AreaList brush determines the accuracy (and thus size) of the stored data.
- Implemented an API to edit and modify images, and to call revert on them. See changes to Patch class including Patch.set(ImagePlus) and Patch.revert() functions, and the "Revert" command in the popup menu. With future ImageJ versions (1.41f and above, still unreleased as of 2008-06-24), plugins can be applied without modification to any number of images at a time.
- Transparencies paint MUCH faster. Particularly, greatly improved repainting speed of AreaList brush with VolatileImage setup, which now lets you have hundreds of filled, transparent AreaList objects as fast as it was with outlines only.
- Added option to reverse the order of the list of imported images for "Import sequence as grid" command.
- Added new Project.saveAs and corresponding Loader and FSLoader methods. See the new minitutorial (for both GUI and code) on creating a project, adding images, registering, adjusting contrast, making a snapshot and saving the project.
- Fixed infinite mipmap regeneration when the storage folder is not writable or doesn't exist.
- Preventing usage of a storage folder where file access permissions do not enable read and write.
- And lots of tiny bug fixes and speed ups!
From here thanks to Davi Bock for profiling TrakEM2. We went over 6 major bottlenecks, which I managed to design out. Davi has redefined my concept of what is a very large data set! TrakEM2 can now interactively and seamlessly browse through 55 gigabytes cut into about 20,000 images and their set of mipmaps, while preserving the ability to edit each image independently.
Thanks to Nuno da Costa for feedback on the measurement system regarding profiles.
My deep appreciation to Janelia Farm Research Campus and particularly Gerry Rubin, Kevin Moses and Julie Simpson for letting Arnim Jenett and I organize the second JFRC Hackathon. Most of the improvements above were implemented at Janelia, who very kindly hosted us all for two weeks.
2008-06-02 - ImageJ_3D_Viewer.jar updated
- Fixed an error in exporting to wavefront .obj file format. Get the new jar ImageJ 3D Viewer and place it in ImageJ's plugins folder.
2008-06-01 - 0.5u released
- Added measurements for profile list: surface and volume, calibrated.
- Fixed calibration for 3D display of profile lists.
2008-05-30 - 0.5t released
- Fixed an error that caused ImageJ to deadlock when deleting an object with the command "Delete...". Thread context had changed.
- Added measurements for Dissector with "Measure" command in the project tree's popup menu.
2008-05-29 - 0.5s released
- Fixed calibration issues for meshes in the 3D viewer (particularly for AreaList and Ball objects.)
- Fixed errors in some tasks, which were not finishing properly on error message.
- Fixed errors involving pipes with less than two points and pipe comparisons.
- Now selecting Ball points at any magnification is easier, without accidentally adding new balls.
- Implemented "Measure" command in the trees, for AreaList, Pipe and Ball. Each type opens in a new results table window. Hidden objects are ignored.
2008-05-28 - 0.5r released
- Updated Bene Schmid's ImageJ 3D Viewer to latest release: MUST upgrade along with TrakEM2_.jar. Notice new keybindings: x|y|z + space bar to toggle orthoslices; x|y|z + scroll wheel or arrows to scroll orthoslices.
- There is a TrakEM2 class diagram for plugin and script writers.
- Fixed repainting errors in Dissector.
- Fixed 3D positioning of image volumes (from stacks) in the 3D viewer (and many issues therein).
- Added magnification-dependent painting to AreaList: avoiding unnecessarily large data.
- Now the panels scroll by increments of one panel height, with the scroll wheel.
- Added "Selection - Select under ROI" menu item.
- Fixed select in Display for the case of of multiple open displays from different projects.
- Avoiding canvas zoom out when calling "Unhide all".
- Enabled numerous menu commands from ImageJ menus: so now calling "File - Save" will save the project; "Process - FFT" will pop up an FFT image of the selected image in a Display, etc. Still incomplete, more to come soon.
- Fixed out of memory errors: assumptions had changed.
- Added "Project - Release memory..." popup menu item.
- Fixed case of calling Selection.selectAll in an empty list of Displayable objects.
- Added "Selection - Restore Selection" popup menu option.
- Plugged several native memory leaks related to lack of flush() on java.awt.Image instances for mipmaps.
- Added project property "keep_mipmaps" to enable jpeg-file deletion when removing a Patch, which is useful for projects that share data.
- Fixed Selection.specify() function logic: was faulty when canceling the dialog.
- Speeded up tree label rendering: faster layer browsing.
- Removed toFront() calls when adding a Displayable to a Display.
- Added "Show in 3D" menu item to Display popup.
- Fixed issues related to Profile type 3D visualization.
- Fixed homogenizeContrast, which would continue working despite the task being cancelled.
- Fixed inability to pan when doing manual landmark alignment.
- Renamed background threads for easy identification as TrakEM2 threads in a Task Manager and from a debugger.
- Fixed annoying error on deleting an image, whereupon mouse motion fails to read pixel value on canvas.
- A message gets logged when attempting to move a locked Displayable object.
- Fixed potential problems when canceling the choose directory dialog in import from text file.
- Fixed dropper tool and mouse motion pixel value reporting in status bar.
- Arrow cursor now used for select, pencil and align tools.
- Respect locked tiles when doing tile registration with SIFT.
- Added project property min_R for controling the scoring of cross- and phase-correlation in StitcingTEM and Registration classes. For example, if your images are noisy, you may want to make the value smaller (about 0.4); if cleaner, use 0.6 or higher.
- Mipmap generation for greyscale images respects the project's image resizing mode: nearest-neighbor, biliniear, bicubic (all 3 hardware-accelerated) and gaussian (default, slowest, best by far).
- Now import image by drag and drop runs on a separate task, like import stack, grid, sequence as grid, etc.
- Enabled manual landmark alignment of slices within a stack (after suggestion from German Koestinger.
From here thank you to Davi Bock
for extensive suggestions and comments. Layer mipmaps will happen ... soon, and because of him.
2008-04-10 - 0.5q released
- Extended color cues toggling with 'p' to Ball objects.
- Added "many..." to the project tree popup 'new' menu, to add multiple nodes (even recursively into their children nodes).
- Added control+drag to add a new node with complete creation of all possible child nodes except those nested -from template tree to project tree, that is. Akin to the new "many..." menu, but just one block.
- Fixed log message for saving, to print as "Saved" only on success and after the file dialog.
- Made ImageLoaderThread a daemon, so it doesn't interfere with shutdown when using TrakEM2 as a library.
- Fixed error in saving/reading empty pipes to/from an XML file.
- Changed priority of LogDispatcher (and StatusDispatcher) threads to NORM_PRIORITY to remove weird waiting time first time the log window opens.
From here thanks to Wayne Pereanu, Janet Altman and Paul Wieringa for their suggestions and feedback.
2008-04-07 - 0.5p released
- Now selecting a color on the color picker will set the new color to all selected objects, not just the active one.
- Fixed an error in mesh making for area lists: meshes for non-contiguous areas will be created as expected now.
- Fixed an error in creating undo steps, which effectively disabled stack slice registration and other undo functionality.
- Now the "Duplicate, link and send to..." dialog with pull down menu for profiles shows in all OSes.
- Now the 3D viewer shows a properly meaningful title for each selected object in the 3D space, correspondent with the title shown in a 2D display for the same object.
2008-04-04 - ImageJ_3D_Viewer.jar updated
2008-03-25 - 0.5o released
- Added ability to move nodes up and down with PAGE_UP/DOWN in the ProjectTree.
- Added 'p' keybinding to turn on/off color cues for Pipes.
- Added hide selected (H), hide deselected (shift+H) and unhide all (alt+H); also in the menus.
- Added color adjustment scroll bars to the Displayable properties dialog, which update dynamically (you can see it happening). So now specific RGB numeric codes can be entered manually, instead of just clicking on the color palette.
- Fixed issue with URL projects not opening.
- Reduced calls to regenerate mipmaps by smarter logic.
- Fixed visibility toggling for pipes and area lists: should work much better now.
- Resizing the layer set now correctly calls pack() on the Display JFrame, which means the navigator gets properly resized (finally!).
- Added median mutation pair points interdistance as a descriptor for pipe scoring, and made it the primary descriptor for sorting.
- Now even if only one stack is open, a dialog prompts to use it or to choose from a file.
- Handling the case where stacks are opened over an URL and thus their FileInfo has no path: a copy is now stored locally in the storage folder.
- Fixed the error about "inconsistent number of points" when loading a pipe: the error condition was wrong; pipes were ok.
- Fixed lack of checking if the front Display is null when trying to get it, which makes the addition of basic types fail when a display is not open (that's ok) but prevented the launching of an error message.
- Fixed infinite loop in reloading images from a stack that had been flushed; this occurred for example when having a stack open, then importing, then closing it, then trying to paint from it -it's slice array is then full of nulls and must be reloaded.
Thanks to Wayne Pereanu for extensive testing and proposing features - we have segmented over 300 MARCM clones from fly brain using pipes, and identified them against our knowledge base (a reference project containing known pipe segmentations).
2008-03-07 - 0.5n released
- Fixed a native memory leak generated when creating flat images -for layer registration, and from any flat image generation.
- Display popup now shows undo/redo transforms (movements, rotations, etc. made manually) even when no images are selected.
- Fixed subproject creation.
- Removed plenty of debugging strings.
2008-03-04 - 0.5m released
- Enabled branch-chaining pipe matching and the creation of average pipes (select a pipe, right-click and choose "Identify" or "Identify with axes").
- Enhanced popup menu entries for the pipe matches table.
- Fixed several potential file path problems for Windows users.
- "Import image" and "Import stack" no longer open TrakEM2 xml projects - were never intended for that purpose.
- Fixed "Open Project" menu entry.
- Fixed potential panels repainting issues.
- Added "Unhide all" and "Hide all but images" to the display popup.
Thanks to Siaumin Fung
for much debugging input.
2008-03-02 - 0.5l released
- Much better pipe comparator algorithm.
- Enabled optional scaling and shear for pipe comparisons.
- Pipe matches table now has a popup menu with options to show in 2D, 3D, and to create an average pipe in 3D.
- Composed a plugin to perform registration of slices in a virtual stack. See "How to register a list of images".
2008-02-28 - 0.5k released
- Added "Identify with axes..." popup menu item for pipes. It lets you define three pipes to use as X,Y,Z axes in two different projects, and then any pipe to compare is first translated/rotated/mirrored in space to fit into the axes of the other, reference project. Contains an automatic preset for Drosophila brain. Shift-click on any of the listed pipe matches in the table will open a display with the axes and the clicked match.
- Fixed calibration issues in pipe comparisons.
- Fixed minor errors regarding visibility checkboxes.
- Fixed a deadlock in an early release of 0.5k, download again...
- Fixed a GUI error that prevented Amira labels to be inserted into the Project Tree.
2008-02-27 - 0.5j released
- Fixed a catastrophic small error that prevented new objects from getting unique ids, introduced in 0.5h.
- Updated ImageJ_3D_Viewer.jar to fix a random error that reveals a bug in Text3D class of java3d.
2008-02-24 - 0.5i released
- Repaints much less but feels much smoother, particularly when dragging or transforming images. In computers +2 years old is going to make a noticeable difference.
- Some changes under the hood involving the FSLoader.
2008-02-22 - 0.5h released
- Improved image cache search speed.
- Added "free" rule to tile stitching when importing a montage, from "Import grid" and "import sequence as grid". Uses SIFT.
- Fixed error in the manual landmark alignment, which made it impossible to align images in the last layer.
2008-02-19 - 0.5g released
- XML files now open in linear time. For projects with over 100,000 objects, opening time goes down from 5 minutes to 30 seconds.
- Now importing images from a text file shows options to freely register all tiles and sections, using SIFT. Works best when aproximate positions for each image are given; otherwise, the current implementation will lead to inaccurate local maxima.
- Now when more than one image is selected in a display, the popup menu shows a "Montage" option to freely register them all. The active one (white-framed) will remain nailed to its position.
- Added a delete menu item for multiple selected layers in the Layer Tree.
- Fixed job canceling, no longer waits on the EventDispatchThread, i.e. repaints are now proper while waiting for job termination.
- Added code handles to take screenshots from the Display3D window.
- Now projects saved without any displays open will reopen with a display automatically launched (you can also create one by double-clicking on a layer in the Layer Tree).
- Fixed "Show centered".
- Search window now displays the text content replacing all newline characters by spaces
- "Info" menu item in the Project Tree now lists the lengths for pipes as well (calibrated).
- Fixed an error in the Selection that was affecting the brush for AreaList.
- Made object selection from the trees, Search, and Compare better: listens to shift key for adding to the current selection (or clearing it first), and shows the object much better in the canvas.
- Fixed an error in the repainting, wherein occasionally older paint events where painting after newer paint events.
- Enabled the "Align Layers (tile-wise global minimization)" menu entry from the Align tool popup menu.
- There is a creeping repainting bug for images .. just click and it's gone -some bad refresh, will be fixed in the next release. Some big changes to the interface on the way as well: trees will get inserted into the display tabs, and the main TrakEM window will disappear for good.
2008-02-07 - 0.5f released
- Fixed an error showing only in single-core processor machines, in which the full magnification image was not being loaded.
- Observed problems in macosx: double dialog for importing a stack (no clue yet) and also bogus messages "file not found" on drag and drop images and stacks (but works fine). Eventually I'll address these. I don't have a macosx machine to develop on (neither any single-core machine anymore).
2008-02-06 - 0.5e released
- Fixed a terrible error that was preventing AreaList and Profile segmentation types from working at all, introduced in 0.5c.
- Fixed lack of inheritance of the preprocessor plugin and mipmaps folder for subprojects.
- Fixed lack of double-slash checking when opening a project xml file. If you get the error "Generate mipmaps in the background?" when you know that mipmap jpeg files exist just fine, then edit your project .xml file and check whether you have this: dir_mipmaps="/trakem2.mipmaps/" - if so, remove the first slash of this relative path.
2008-02-05 - 0.5d released
- Now the image preloading uses a fixed maximum number of threads, which results in faster image loading when zooming in.
- Fixed an error that caused the bounding box of pipes to be incorrect.
- Now ImageJ's log window is finally enabled, all messages being sent to it via a dispatcher daemon thread to avoid waiting on the window to repaint.
- Now messages to ImageJ status are also delivered via a dispatcher thread to avoid waiting on repaints.
- Fixed an error in web export affecting non-rectangular ROIs.
- Plenty of code cleanup: removed plenty of unused and/or deprecated methods.
- Fixed an error, introduced recently, in deselecting objects with the ESC key.
2008-02-01 - 0.5c released
- Fixed an error preventing floating text labels from being dragged, which was affecting their repainting as well.
- Added a Project - Project Properties... popup menu entry to enable/disable automatic image linking for floating objects like text labels, area lists (segmentation labels), pipes, balls, and dissectors.
- Added ability to use mirrored pipes when comparing the selected pipe against any others.
- Fixed the window of the pipe comparator, which now correctly cleans up tabs when closed.
2008-01-30 - 0.5b released
- Fixed error in hide/unhide introduced in 0.5a.
- Less repaints of the listed panels when browsing through layers.
- Better preservation of selections when browsing through layers.
- Better layout of the pipe comparator window.
- Now the export for web uses proper thread-safe jpeg writing routines instead of thread-unsafe ImageJ's defaults.
2008-01-25 - 0.5a released
- Speeded up layer browsing enormously.
- Added support for URL image file and folder paths. Even a project XML file may be opened over HTTP protocol, using ImageJ's menu "File - Import - URL...". REQUIRES ImageJ 1.39q or later and a modified HandleExtraFileTypes.class file in your plugins folder (source: HandleExtraFileTypes.java).
- Added support for relative mipmaps folder and storage folder paths. That is: if all image files and the XML file and the initially chosen storage folder are contained within the same parent folder or subfolders, all paths will be relative, and thus the project can be safely transferred to other computers.
- Fixed landmark-based alignment: proper painting and proper registration with affine transforms, and proper undo.
- Fixed autoselect panel and scroll to visible when selecting a ZDisplayable such as a pipe or ball or area list.
- Fixed an error in the 'Identify' which could potentially lock the program when a single pipe existed in the sum of all open projects.
- Fixed incorrect brush stroke for area list.
- Now XML files are written incrementally, avoiding potential out of memory errors for very large projects (like my pet project with has over 115,000 images).
- Fixed an error in the contrast homogenization which was resulting in the usage of way more than just the central 50% of all Patch statistics.
- Fixed potential native memory leak with mipmap images.
- Fixed repainting when selecting none and more than one were selected.
2008-01-16 - ImageJ_3D_Viewer.jar updated
2007-12-20 - 0.4z released
- Corrected excessive loading of the actual image when a mipmap smaller than the smallest mipmap was being asked for.
- Fine-tuned thread priority and policy for preloading images.
- Fixed excessive repainting of the navigator.
- Fixed error reponsible for occasional mixup of the cache. A mipmap could be associated with the wrong id.
2007-12-19 - 0.4y released
- Implemented parallel image preloading to boost repainting.
- Fixed an error that was causing all given names to abstract project objects in the Project Tree to be wiped when their template had its name changed.
2007-12-19 - ImageJ_3D_Viewer.jar updated
- Get the new ImageJ_3D_Viewer.jar which fixes some multithreading issues that resulted in some meshes failing to render properly or at all.
2007-12-17 - 0.4x released
- Now the neurite BLAST checks against both possible orientations of a pipe.
- Fixed improper removal of the tab when closing a project from the main trees window.
- Fixed improper user interface updating for the trees, which sometimes resulted in strange images and other parts of the GUI to be painted on top of them.
- Fixed shrinking thickness of pipe when selecting it if transformed.
2007-12-13 - 0.4w released
- Fixed an error that was preventing TrakEM2 from running at all in some machines, because of the asynchronous nature of the swing interface messing up the initialization.
2007-12-12 - 0.4v released
- Introducing first stage of the neurite BLAST: check identity between any two tubular structures, be it blood vessels, axons, dendrites, bones, cables and whatever objects that can be modeled with a three-dimensional pipe or tube. Just make a pipe, right-click and select "Identify...". A lot more to come from this direction soon. And: my deep thanks to Johannes Schindelin for having the patience to explain to me once more some vector math that I had long forgotten.
- Fixed improperly sized canvas when opening a new display by double-clicking a layer.
- Fixed channel opacity (with the sliders only; the checkboxes still fail misteriously).
- When zooming out the canvas is no longer made smaller (unless it was larger than the screen.)
- Fixed painting of the selection: now it looks nice.
- Fixed painting of pipes: now they are smooth and drawn with the proper stroke thickness.
- Fixed 3D meshes of pipes: now triangles have their normals towards outside, so pipes are no longer oddly transparent.
- Relaxed the accuracy requirement in selecting points of a pipe, ball and profile with the PEN tool.
- Now the project name prints on the Display's title, to keep track of which one belongs to which.
- Untitled projects are now named so, and projects which are saved into an XML file have that name assigned as title unless there is a title other than "Project".
- Fixed the creation of 3D meshes from profiles: both closed and open look right now.
- Wrapped the import stack and import image into a proper multithread task, so the displays are no longer blocked and ugly.
- Fixed positioning of the trees in the split panes of the main TrakEM2 window. No longer crunched to the left side when opening a second project - it's all about Swing's asynchronous mode of working, which is hilarious for one never knows which methods will need to be wrapped in blankets and called with SwingUtilities.invokeAndWait, and which don't need to.
- Fixed improper box of the floating text labels, which was preventing their dragging, etc.
- Fixed potential problem in Windows machines when importing a stack from the "Import / Import Stack" popup menu.
- Some internal little fixes involving memory usage, the XML file export, and the formatting of floating point numbers for printing (now survives scientific notation of very small floating-point numbers).
Besides the neurite BLAST first stage, this release is a deep cleanup of little usability annoyances that were just getting me
2007-12-07 - 0.4u released
- Added adaptive zoom out: as far as you want, as long as the canvas remains larger than 10x10 pixels.
- Added histogram correction and layer-to-layer registration to the "Import from text file..."
- Fixed lack of "Import from text file..." in the Layer Tree popup menu for a layer.
- Fixed packaging of source zip archive - was not including the mpi/fruitfly classes!
2007-12-05 - 0.4t released
- Fixed a simple yet catastrophic error: lack of file closing when opening grey mipmap jpeg files that would eventually make the operating system run out of file handles and needed be rebooted.
- Added ability to create a subproject under a ROI, which is used for selecting all objects in the selected range of layers that intersect with the ROI. Still needs some work.
- Added support for opening images from http:// URLs.
- Cleaned up repainting machinery.
2007-12-03 - 0.4s released
- Created an "Import from text file..." option, that does exactly that: given a text file with one image per line with this columns: filename x y z, all layers etc. will be created for you and images placed in them.
- Fixed numerous issues with repaints. Much, much fewer threads are used now; also no longer black lines (which were introduced in 0.4q).
- Fixed an error introduced in 0.4q, which was not enabling the usage of an offset for importing a sequence of images as a grid/montage.
2007-11-26 - 0.4r released - java 1.5.0 support
- Compiled and distributed for java 1.5.0. You'll have to fetch all necessary (and recompiled) jar files again if you'd like to run java 1.5.0. See the how to. Bear in mind that java 1.5.0 has severe performance problems when compared to java 1.6.0. Users running 1.6.0 will not be affected in any way by jar files being compiled to support 1.5.0. This change fixes the inability of Apple to release a proper java 1.6.0 package for MacOSX, and the misterious disappearance of the java-1.6.0-beta.dmg installer package from the Apple Developer Connection pages.
- Fixed some issues with snapping. Still not totally correct when there are linked images with rotations.
- Fixed more issues with repainting. Still not final either.
- Fixed improper name updating in the panels when renaming.
- Fixed image pasting: will create a new file in the storage folder first selected when creating a project.
2007-11-22 - 0.4q released
- No more pauses in the program. I've rewritten memory management internals to avoid any calls to System.gc() that could potentially stall the program for a few seconds (sometimes for a lot of seconds!).
- Even faster repainting, to the point that I had to rewrite the multithreaded repainting routines.
- Now importing a montage includes, when stitching, a montage-wise intertile distance minimization procedure thanks to Stephan Saalfeld.
- ImageJ integration is rather broken, but on its way to get up and running better than ever. What this means: that on the meanwhile adjusting the B&C of an image doesn't work, for example.
2007-11-20 - 0.4p released
- Fixed a problem in importing montages regarding stitching and the usage of mipmaps for the task.
- Optimized montage importer pipeline speed.
- Higher speed and less memory usage when saving and particularly opening jpeg images (the mipmaps are jpegs).
- Fixed file path problems for MSWindows.
- Optimized clip rectangle when repainting.
2007-11-19 - 0.4o released
- Fixed a problem in memory reservation for concurrent threads opening images.
2007-11-19 - 0.4n released
- Further fine-tuned double-buffering for better perceived repainting speed.
- No longer paint pink frames when transforming.
2007-11-19 - 0.4m released
- Finally, no flickering. Other repainting parts may have been affected though - stay tuned.
- Fixed excessive reloading of images that was slowing down the selection and dragging of images.
- Fine-tuned the scale and the fall-back to cross-correlation from phase-correlation when snapping to avoid very long unnecessary waiting times.
- Enabled usage of mipmaps for the registration machinery, if enabled, which mightily speeds-up the process.
- Wrapped the snap functionality into a typical task with input disabled, etc.
- Prevented even more navigator repainting.
2007-11-17 - 0.4l released
- Vastly improved perceived repainting speed.
- Navigation is also a lot more fluid.
- The file loading internals regarding synchronization have been rewritten so that now there is a considerable degree of concurrency allowed, while still memory-safe. Other parts of TrakEM2 which depend on loading images will also work much, much faster, particularly when parallelizable.
- The display popup menu got a new entry: homogenize contrast -for selected images, or for one layer or a range of them.
2007-11-16 - 0.4k released
From here thanks to Davi Bock for his detailed feedback and suggestions.
- Implemented pre-paint: when zooming or panning, if there is a scaled version of the required image, that one will be used temporarily for painting while loading on the background the proper image.
- Fixed unnecessary loading of the ImagePlus when selecting images, and when closing a project.
- Fixed unnecessary repainting when pushing modifier keys such as alt or control without pushing any proper key.
- I've implemented two different repainting strategies involving double-buffering to avoid flickering, but none work as expected. If you know about such things, please have a look at versions 0f21918afd and f47a8d0515 at our source code git repository. I'd love to hear an explanation on why flickering is not eliminated with a system consisting of two full offscreen images, which work as the front and the back buffer.
2007-11-13 - 0.4j released
- Worked around an ImageJ limitation for saving images into files (no proper multithreading!), which was resulting in some random mipmap jpeg files not being generated properly -i.e. some tiles would appear with the wrong image in it.
- Fixed an error in managing the Display3D that resulted in such display opening up when adjusting the transparency of a Displayable object currently not displayed in 3D.
- Fixed lack of ability to change active object's color. Still has problems since if a Display is not immediately active under the ColorPicker window, the color for the active object will be changed anyway.
- Fixed the painting-always mode of an object when the PEN tool is selected.
2007-11-09 - ImageJ_3D_Viewer.jar updated
- Get the new ImageJ_3D_Viewer.jar which includes the ability to smooth meshes. Works along with TrakEM2 0.4i.
2007-11-09 - 0.4i released
- Minor fixes to flat image generation to ensure proper quality.
- Now on opening an old project which had no storage folder the program asks whether mipmaps should be generated in the background.
- Minor fixes in the cache system.
- REQUIRES the new ImageJ_3D_Viewer.jar, so if you download this update, download that one too.
2007-11-01 - 0.4h released
- Implemented mipmaps: prescaled images to accelerate (a lot!) image browsing and the generation of scaled flat images, and also LayerSet virtualization. Old projects will automatically get as the storage folder the folder containing the XML file. Keep in mind that adding images is now slower, since mipmap generation is happening in background threads (but that's the good part: it's a one time process).
- Fixed a bug in repainting the active image after clicking in an empty area of the canvas.
- Fixed a bug in applying color to the active object, which was ocurring when other active windows besides open TrakEM2 displays were using the color picker window.
- Now send to layer and related methods will properly acknowledge the selection, not just the active object.
- Now the scrolling bar for browsing layers in a Display is correctly disabled when there is only one layer.
- Now the navigator will only accept dragging of the red rectangle -the area being shown- when the mouse click happens inside it.
- The Displayable class got a few new methods for getting the exact polygonal intersecting area with any other Displayable object.
2007-09-25 - 0.4g released
- Now image snapshots paint only on loading, avoiding excessive, unnecessary image loading for XML-based projects. Thanks to Davi Bock for suggesting to introduce a smart snapshot repainting system.
2007-09-20 - 0.4f released
- Fixed an error introduced in 0.4d that resulted in the import sequence as grid functionality to lock irreversibly.
2007-09-20 - 0.4e released
- Fixed an error in 'save as', whereupon the xml file path was not being updated in the project on which save as was called. Now, after calling 'save as', subsequent calls to 'save' will overwrite the new xml file, not the original one.
- Added temporarily the ability to measure the volume and lateral surface of AreaList objects by calling 'Info' on the project tree nodes.
- Fixed lack of binary sorting when importing a folder of images as a stack by drag and drop.
- Fixed improper quality handling in the making of flat images.
- Fine tuned again memory demands for SIFT registration.
- Removed a superfluous image resizing operation from the phase-correlation pipeline.
- Added preprocessor plugin awareness to the import image and import next image. So far it was being already applied to importing montages and stacks, and on all images on reopening a project.
2007-09-15 - 0.4d released
- Fine-tuned the SIFT Registration to consume as little memory as possible. It uses about half as much now.
- Smoothed out the repainting pipeline, should feel more responsive now.
- Fixed some subtle errors that could result in total block of the display, when the specified preprocessor plugin was not found or threw an exception in testing it.
- For best performance, importing montages now temporarily disables the repainting of snapshots. The result is considerably faster and smoother montage importing. At any time, you can manually disable snapshot repainting completely by right-clicking on a display and selecting Display -> Properties, and unchecking the "Enable snapshots" check box. It's value, as all other options, are preserved when saving to XML.
- Using -Xincgc is strongly recommended, particularly if you have a multicore CPU. This little cryptograph actually means "enable incremental garbage collection", and can be set up in ImageJ's JVM arguments. In MSWindows, look into the ImageJ launcher script; in MacOSX, right-click ImageJ application and select "Show Package Contents", then open the Contents folder, open the Info.plist file with a text editor (right-click and select "Open with"), and scroll down until you find the 'VMOptions' key, which you can create if it doesn't exist, and will most likely contain the -Xmx argument in it.
2007-09-12 - 0.4c released
- Fixed a bug that prevented opening certain sequences of dissector points.
- Added the 'propagate' functionality for registering layers.
2007-09-11 - 0.4b released
- Introducing the Dissector object for counting objects uniquely that appear across multiple consecutive layers. With this new data type, the Double Dissector technique becomes possible, for example to estimate synapse densities in brain tissue.
2007-08-29 - 0.4a released
This release is not ready for database use. Use XML projects instead.
You should be using java 1.6.0. Please ask your local system administrator to install it. You can check in ImageJ's menu Plugins -> Utilities -> ImageJ Properties which java version you are using.
- Full support for affine transformation of every floating object: images, text and segmentation profiles (area lists [a.k.a 'labels'], bezier profiles, tubes, spheres). Full compatibility with old XML files - just open and resave.
- Automatic layer registration using SIFT (Scale invariant feature transform), implemented by Stephan Saalfeld and Stephan Preibisch from Tomancak's group, Max Plank Institute for Cell Biology and Genetics. Works great guys! What this means: serial sections from electron microscopy, each consisting of a stitched montage of images, can now be registered automatically (even headless in a cluster with custom plugins). Usage: select the Align tool, right-click on a display and choose "Align layers".
- Automatic slice registration using SIFT as well. Just select an image belonging to a stack and right-click it with the Align tool selected, and choose "Align stack slices".
- Improved repainting: less memory-hungry, and a bit faster.
- Improved file-system project support.
- Improved consistency of template types naming. Spaces and upper case are not accepted any longer; for readability purposes, all underscores are shown as blank spaces.
- Full support for Amira files: just drag and drop them into an open Display. Be sure to have the AmiraMesh_.jar and the jzlib-1.0.7.jar installed, as well as an Amira-aware HandleExtraFileTypes.class in your ImageJ plugins folder. What this means: if you started a project in Amira, you can now visualize and continue it in TrakEM2, both for segmentations and for 3D visualization. Many thanks to Johannes Schindelin and Bene Schmid for building the fantastic AmiraMesh library.
- Added safety checks to prevent layer browsing when transforming a floating object (image, etc.)
- Numerous little bug fixes.
2007-06-20 - 0.3v released
- Fixed locking problems with selections.
- Fine-tuned image stitching.
- Improved montage importing speed.
- Added ability to choose quality over speed for repainting the canvas, by adjusting a checkbox in the Display / Properties dialog.
2007-06-19 - 0.3u released - Janelia Farms release
- Vastly improved image stitching when importing grids, thanks to Stephan Preibisch. Speed is much faster, reliability is backed up by a double incremental method of phase-correlation and cross-correlation. The edu_mines_jtk.jar and the Jama-1.0.2.jar are now required for image stitching.
- Full 3D display thanks to Bene Schmid's ImageJ 3D Viewer and lots of math utilities from Johannes Schindelin. The 3D applies to tubes, spheres and segmentation profiles (labelfields or area lists), as well as to images (volume view and orthoslices). Bene, the 3D viewer rocks!
- Much faster and precise image snapping, thanks to code by Stephan Preibisch on phase- and cross-correlation.
- Added an option to export for web in the "Create flat image" dialog, which creates a pyramid of jpeg files suitable for visualization in the web viewer designed by Stephan Saalfeld. Some work on the way for full support of the web viewer.
- When running long tasks, now ImageJ's toolbar reports on the status of the task. For example when importing a sequence as a grid, or generating flat images from the layers.
- Long tasks are interruptible: push ESC and confirm the dialog, or right-click on the Display and choose the task to interrupt from the popup menu.
- Introduced the concept of a pre-processor plugin: a plugin that is run on the images right after loading them, before TrakEM2 ever reads the image dimensions or pixels. This functionality enables the usage of noisy or low-contrast original images as data source, while modeling and annotating on nicely displayed, corrected images. And to cut out unwanted margins such as those found in EMMENU .dat images.
- The calibration is now saved in the XML file, specific for each LayerSet entry.
- Now the amount of maximum memory available is more conservatively estimated, particularly for 64-bit machines.
- Improved headless mode support for long-running tasks in a cluster. In particular: all methods responsible for long tasks (importing and/or stitching stacks and montages) return a Thread, which should be joined to wait for the task to finish.
- Added ability to duplicate basic objects in the ProjectTree, i.e. now you can clone a profile, a tube, a set of spheres, etc. Simply right-click and "duplicate" in the project tree.
- Added a 'quality' option for creating flat images (slower, but better).
- Fixed problems in selecting spheres in the Display.
- Fixed "move to top" and "move to bottom" to work in all cases.
- Now the first sphere ever added to a Ball object will have a screen radius of 10, regardless of magnification, to ensure it is visible and editable. Same with diameter of the brush in an AreaList.
- Now the program will warn the user when java3d or the ImageJ_3D_Viewer.jar are not installed.
- The navigator's red rectangle representing the viewport will never be drawn so small that it can't be seen.
- User input blockage by long processes is now compartmentalized by project.
- Fixed repainting traces with Profile and Pipe.
- Now deleting a point in a tube, sphere or profile with control+shift+click will delete the closest point to the click, present in the current layer.
- Now tubes are more flexible: points can be appended in the current layer intersected into segments present in other layers, as well as before and after.
- Fixed a problem that made layers without images to be reported as empty.
- Fixed low quality display of image snapshots, particularly noticeable when at or below 25% magnification.
- When importing a grid (montage), now ordering is top row first, left to right. This is to take advantage of earlier images having better quality (least deformations) than later images, particularly in TEM images acquired from both EMMENU with beam shifting and Leginon with stage-shifting.
- Now the middle button pans the view (like in Inkscape), by switching momentarily to the hand tool. Repainting of panning with hand tool is also much faster now, comparable to using the navigator.
- In MacOSX, command+wheel will zoom in, since control+wheel zooms into the desktop. In other operating systems, control+wheel zooms in.
- Many many many little bugs fixed.
2007-05-01 - 0.3t released
- Added ability to change the overlapping order for ZDisplayable objects (send up/down top/bottom), since AreaList can be opaque.
- Partially implemented "Info" functionality for objects in the Project Tree. For Ball, it will list the number per layer and the average diameter.
- Fixed excessive repainting when using the AreaList's brush.
- Fixed problems AreaList and the listing snapshot tabs on the Displays.
- The project toolbar listener is now removed from the ImageJ's toolbar on exit.
- Fixed repainting problems with floating objects such as labels and Ball.
- Fixed duplication in Ball's XML style attribute.
- Fixed the Autoresize Canvas/LayerSet and set Display/Canvas dimensions, which was ignoring ZDisplayable objects (Ball, Pipe, AreaList), and was also setting an incorrect magnification (now zooms out to show the entire area).
- Fixed file path problem when importing stacks from open ImageJ windows.
- Fixed lack of database reloading of areas when exporting to 3D
- Fixed lack of visibility state storage in the XML file.
- Fixed problems in importing a sequence of images as a grid for XML projects.
- Fixed problems in creating a project from a template.
- Added ability to fine-tune importing of grids and sequences as grids with cross-correlation.
- Fixed problem in importing image sequences as stacks by drag and drop of the folder than contains them, for XML projects.
- Fixed problem in determining the file path of when importing stacks that are currently open in ImageJ.
- Improved MS Windows support.
- Fixed problem in creating a flat image (a snapshot) when there is only one layer.
- Fixed problems with Search when the title was null.
- Added ability to run headless (that is, purely from the command line, without a graphical user interface or GUI), for the purpose of running long jobs in clusters. For programmers: see the ini.trakem2.ControlWindow class, methods setGUIEnabled(boolean) and isGUIEnabled().
- Added ability to cross-correlate tiles when importing a grid of images or an image sequence as a grid.
- A 3D display is almost completed, thanks to Bene Schmid's and Johannes Schindelin java implementation of the VIB protocol for insect brain registration. Next release will have it! Promise!
2007-04-18 - 0.3s released
- Fixed problem with opening and updating database projects.
2007-04-17 - 0.3r released
- AreaList (i.e. painted segmentations) can be shown either as outlines or as solid areas, through the properties menu. Options are provided to apply the painting mode to all existing areas.
- Fixed several minor issues with repainting when scrolling through layers, related to the AreaList brush, and to resizing the window.
- 'Hide all' functionality now applies to all objects in a layer set, not just to the current layer.
- When creating a flat image, the resulting stack will have a proper pixelDepth setup.
- When importing stacks, the pixel depth for each layer is read from the stack image properties.
- Fixed issues with the Transformation undo steps.
- Newly opened displays now show a much larger drawing area.
- Fixed problems with dragging newly created labels. Their dimensions were being rest to 1,1.
- Selecting an object in the Z-space (pipe, ball, area list) now correctly highlights its node in the project tree.
- Double-clicking a node corresponding to a Z-space object now correctly keeps the same layer if shown in the current Display, or moves to the first layer where the object shows in the layer set.
- Simplified the threading painting machinery of the DisplayCanvas.
- Saving a new XML project no longer asks about saving images, since the images exist in the file system already.
- Added the ability to prepend points to a pipe. Just click near the first point but far from both the drawn tube and the last point.
- Fixed lack of repainting with Z-space objects when using the Color Picker to adjust their color.
2007-04-04 - 0.3q released
- Added a new segmentation type, AreaList, similar to Amira's labelfield. The 3D mesh generator by marching cubes and a hardware-accelerated 3D viewer is on the way, thanks to the VIB people in Würzburg, particularly Bene Schmid and Johannes Schindelin.
- Fixed a long-standing bug that resulted in a bogus second full-display repaint for every repaint. Now repainting feels much faster.
- The 's' key on a Display will save the project to an XML file.
- Scroll wheel navigates the layers like slices in a regular ImageJ stack.
- Control+scroll wheel zooms in/out.
- Now the presence of pipes, balls and arealists is checked when creating flat images.
- Fixed problems reading colors from XML files for path entries (images).
- Fixed excessive (and bogus) undo steps when transforming.
- Fixed minor DTD inconsistencies which the SAX parser was ignoring anyway.
- Fixed a few java 1.6.0-specific code lines. Now compiles with 1.4.2 just fine (thanks to Wayne Rasband and Leon Espinosa for reporting on this).
- Fixed occasional problems in delivering the proper slice image when dealing with whole stacks.
- Fixed problems in removing AreaList and Ball objects.
- Added ability to adjust the font family, size and style of a label through its Properties dialog.
2007-03-23 - 0.3p released
- Added ability to work with stacks directly, without creating sequences of images -still under development.
- Added ability to delete all points in a profile by pushing 'x' while the pen or pencil tools are selected.
- For XML projects, the JDBC driver is no longer needed in the ImageJ's classpath.
- Fixed bug that prevented adding points to a closed profile if all points where deleted.
- Now node expanded state in the project tree is preserved.
- When dragging nodes, their expanded state is preserved.
- When color is changed for a profile, the color of all profiles from its profile list will be updated as well.
- Fixed a bug that prevented importing stacks other than by drag and drop.
- Created a profile list -based registration tool, in which the center of any two linked profiles in the profile list are used as a registration landmarks.
- When creating flat images, proper interpolation will apply even when magnification is below 100%.
- Added a convenient Project menu with "Save" and "Save as..." under the Display popup menu, for XML projects.
- Removed the obsolete "Display -> Rotate Layer/LayerSet" menu item under the Display's popup menu.
- A bounding box around selected Displayables is only painted when the Selection tool (black arrow) is active.
- Bezier profiles will only show their control points when the pen or pencil tools are selected.
- Fixed a bug that affected single-point Bezier curves, rendering them closed and thus unextendable on second click-drag on the first point.
- Fixed 3D exporter, which was skipping objects with the exact same name.
- Fixed a bug affecting Layer objects without a title, in which its title was not properly printed.
- Selected tab in the Display no longer changes automatically when selecting an object with the Select tool which not belonged to such tab.
- Added convenient methods in the ControlWindow class to grab the active project, and in the DNDTree class to grab the root node of the trees, for developers.
- Fused the Display preferences popup menu item in the Layer tree and the Display's properties popup menu item.
- Fixed a bug that prevented the deletion of template nodes.
- Fixed the HandleExtraFileTypes.java file provided as example to return IMAGE_OPENED when successfully processing an .xml file, to prevent ImageJ from opening the .xml file as text when the opened project contained no floating images.
- Fixed loss of Display window focus when dragging the mouse within the Display window.
- No uppercase Template nodes are allowed to avoid conflicts -still under revision.
- Empty labels, or labels whose text editor has been closed without any text inside, are automatically removed.
- Now labels with line breaks will print nicer in the labels' tab of a Display.
- When exporting a profile list to a .shapes file for importing in Blender using the CurveMorphing script, several branches are handled properly, and each branch is presented in Blender as separate mesh object. The total mesh won't be unique and non-manifold until the pure java 3D exporter is finished.
2007-02-23 - 0.3o released
- Fixed a critical bug affecting XML projects, which was destroying the image file path in the XML file.
- Fixed a bug affecting newly created XML projects, which on calling save a second time was asking again for a file to save to.
- Fixed yet another bug in XML projects: images were being saved at every non-pixel related modification in the displays.
- When importing stacks, each image gets as name the stack slice label, followed by the stack file name and slice number.
- Fixed a bug that prevented types with uppercase characters to be read properly in XML projects.
- Added ability to open XML projects by drag and drop into ImageJ's toolbar, or from within the standard File/Open menu.
2007-02-21 - 0.3n released
- Fixed numerous problems in XML projects when importing stacks, by drag and drop or by right-click / Display / import image. Now XML projects behave as if they don't own the images at all.
- Relaxed the load on the PostgreSQL backend for database projects by disabling autocommit, and commiting changes later, when performing large modifications to the database.
- Added ability to drag profiles by alt+drag while the pen tool is selected, without affecting linked objects.
- Added options to save flat images directly to files. If a ROI exists it will crop the snapshot to its bounding box.
- The loading of images from the database has been made resistant to database disk failures (meaning, the program will repaint all it can, and won't repaint what it cannot; the database status will remain unchanged).
- For database projects, snapshots from grayscale images will be generated as 8-bit as well, saving 4x image storing and loading time. If your database contains 8-bit images only, and you'd like to replace all snapshots with proper 8-bit images, use this plugin. Requires the TrakEM2_.jar in ImageJ's classpath.
- Automatically resizing the Display/LayerSet to fit around the minimal box of all contained objects now correctly updates the undo steps.
- Java 1.6.0 is strongly recommended (much better repainting speed, much better responsiveness).
2007-02-11 - 0.3m released
- Added new tools to manage layers in the layer tree, such as to displace a group of selected layers in the Z axis, or reverse their Z order.
- Added a Search dialog to quickly find any label, image, profile, etc.
- XML-based projects are finally macro recordable for easy reopening.
- Fixed several repainting problems affecting the selection of profiles, their duplication and layer scrolling.
- Fixed profile insertion location into the project tree, now profiles are ordered by their layer's Z coordinate.
- Much better tree repainting.
- Fixed a locking problem with database projects.
- Better windows support by avoiding the usage of backslashes in file paths.
- When quitting an XML-based project, the dialog now shows Yes or No only.
- Fixed an Exception thrown when closing XML projects from the 'x' in the control window tabs.
- Deleting a profile now properly updates the offscreen images.
- Unlocking of unlinked objects now works as expected.
- Selections are properly updated when locking/unlocking objects.
- The landmark-based registration tool does no longer ignore the locked state of the affected objects.
- Adjusting properties properly repaints.
- Many little bug fixes.
2006-12-27 - 0.3l released
- Fixed long standing (but patched) bug of "Duplicate, link and send to previous layer" (the JMenuItem had the ActionListener added twice to it!)
- Fixed repainting issue with the "Duplicate, link and send <..>" (not talking properly to the Display selection)
- Fixed "many new layers" issues: layers where not being added to the parent layer set, nor was the scrolling bar updated properly.
- Fixed some repainting issues when deleting displayables (where not being removed from the selection).
- Fixed layer ordering and numbering issue when adding new layers.
2006-12-16 - 0.3k released
- In XML File-System projects (i.e. no database), images are saved as copies whenever their pixels are modified. No need to save them independently.
- Updated the example plugins to use a proper, more consistent selection updating system that copes well with multiple open displays with different selections each.
- Softened the rolling memory for snapshots even more, to flush 25% of all snapshots at a time instead of 50%, when necessary. The reason: for projects with massive amounts of large images, snapshots are the primary source for painting to the screen when navigating at a zoom level of 25% or less (ideal for aligning layers).
- The "Make flat image" to create canvas screenshots accepts ROIs by default (since 0.3j).
2006-12-02 - 0.3j released
- Multiple selections with a schema similar to that of Blender: click to select, shift+click to add to selection, shift+click a selected object to make it the active object in the selection, shift+click the active object in a selection to deselect it.
- Transformations with rotation/scaling/translation, no shearing allowed (when scaling while rotated, objects scale preserving their right angles). Rotation preserves pixel quality completely, by not rotating the data but only it's screen representation. Multiple selected objects are transformed at the same time, and so are objects of their linked group. Start transforming with 't', cancel with 'ESC', apply with 'ENTER'.
- Full undo/redo for transformations, with shift+z (undo) and alt+z (redo)l; 'z' alone fires the internal ImageJ undo for the last image if no other image has been activated. 40 steps recorded. The undo queue depends on the Layer Set, so it's preserved even if displays are closed, but it's not preserved across sessions.
- Image alignment or registration across layers with landmarks, thanks to Johannes Schindelin, who put together a squared error minimization formula in his visit to the Max Plank Institute in Dresden, where I am at the moment.
- Drag and drop images and folders of images into an open display (tested in Ubuntu Linux running Nautilus, and in MacOSX; should also work for konqueror in KDE and in MS Windows). For folders, a dialog popups up asking whether a stack, a grid or a sequence as grid are to be imported.
- Remastered toolbar, integrated into ImageJ's toolbar using macro tools.
- Softened the rolling memory to flush 50% of all snapshots at a time instead of 90%, when necessary.
- Discarded transparent images for offscreen buffering for repainting, greatly improving repainting speed in MS Windows and some GNU/Linux machines, and also over remote X sessions, particularly noticeable when there are more than one image per layer.
- For increased navigation speed across layers, a Layer Set can be adjusted to paint snapshots as bounding boxes. This avoids the need to reload the snapshot to paint the navigator, saving lots of time.
- Many little bug fixes on the XML projects regarding image file storage and overwriting, and XML file saving and parsing.
- Fixed a nasty bug that didn't allow a profile inside a profile list when creating a new node in the Template Tree.
- Fixed an OutOfMemoryError thrown when opening a Display whose LayerSet was gigantic (although it had no consequences).
- The "New Project" command, to create a new file system-based project, now creates a default layer at Z=0 and thickness 1, and opens a Display for it.
- The manual has been updated with all the above, plus java code examples on how to run plugins on TrakEM2 objects.
2006-10-02 - 0.3i released
- Improved snapshots updating into the database.
- Fixed incorrect naming of layers.
- Enabled the ability to delete images linked only to other images within the same layer, and thus the ability to delete layers than contain this kind of images only.
- The import grid and import sequence as grid commands can now run a PlugInFilter existing in the ImageJ plugins folder on every imported image prior to its insertion.
2006-09-30 - 0.3h released
- Performance-tuned import large amounts of images into the database, by disabling autocommit and then doing one single commit at the end (tremendous speed up, particularly when importing more than 200 1MB images at a time).
- Fixed lack of "Delete..." menu item in XML projects.
- Fixed moving linked groups between layers.
- Fixed incorrect XML file exporting for the project DTD tag.
- Fixed resizing of LayerSet/Display.
2006-09-28 - 0.3g released
- Mathias Buehlmann contributed a freehand tool for quick generation and editing of profiles.
- Stephan Nufer contributed a semiautomated image snapping for quick manual montaging.
- Added the ability to import a sequence of images as a grid or montage, by specifying the number of columns and rows.
- Database projects can be exported to XML.
- A database is no longer essential. Projects can be created to live in memory and be saved as XML and a folder or images. Rolling memory (reloading of images when need arises) works as well.
- The project structure template no longer needs to be created before hand. One can create template objects on the fly.
- The template file to load when creating a project can be defined as a .dtd file, or as an .xml file. You can import the DTD (the object structure) of an exported project by selecting its .xml file.
- The template tree is exportable as a .dtd file.
- Database structure has changed slightly. On first run, TrakEM2 will ask for permission to update the database. Namely: adding a boolean 'locked' field to ab_displayables, parsing the XML template into TemplateThing objects saved in the ab_things table, and renaming of 'Layer Set' and 'Layer' to 'layer_set' and 'layer' in the ab_things table.
- Locking of objects is saved, no longer temporary.
- Fixed a minor bug that could prevent a project from opening, but which was compensated by another minor bug.
- Fixed inability to delete individual balls.
- Fixed a Thread locking issue that occurred seldom when making a flat image.
- The display no longer repaints the navigator panel (aka lower left smaller image) while dragging an object inside the canvas (incurred in tremendous repainting cost when dragging large linked groups).
2006-07-24 - 0.3f released
- Fixed lack of translation of Ball objects when exporting to 3D .shapes file.
- No more transparent offscreen2 when no images need to be painted over the background. Speeds up repainting a lot, particularly in windows machines.
- More logical lock/unlocking system in. Now unlocking is group-wise, affecting linked objects.
From here a HUGE thanks to Wayne Pereanu
for using these beta versions and reporting bugs and issues.
2006-07-23 - 0.3e released
- Added a Z scale factor for exporting .shapes or .svg data for 3D modeling, to manually correct for sample squashing issues under the coverslip.
- Pipe and Ball objects now report in the ImageJ status bar when the radius is being adjusted.
- Non-image objects now paint directly instead of to a transparent offscreen image if appropriate, to avoid flickering (particularly in Linux and Windows).
- Fixed lack of repainting of the tabs when opening or reloading a Display.
- Enhanced the drag'n'drop abilities of the Template and Project trees. Now inner objects can be dragged and parents are automatically generated or assigned to existing ones.
- Fixed issues with pipes related to linking/unlinking when no part of the selected pipe was active in the current layer.
- Fixed focus problem with the canvas. Now on mouse over the canvas always gets focus.
- Fixed renaming of basic types (Pipe, Ball and Profile objects) in the project tree. Plus now the name of the closest wrapping abstract object is used as name in the snapshot panel of the displays.
- Fixed misfeature with ZDisplayable objects (Pipe and Ball) when switching layers. Now they remain selected.
- The title of a Display now shows a lot more information on the Layer currently showing.
- Layers can be named, and they are listed showing their index order and their Z in the Layer Tree.
- Fixed visibility issues in the navigator. Now invisible basic objects don't show.
- Fixed repainting issue when deleting a Pipe from the Project Tree.
- Added a locking feature for any object in the Display. The locking naturally affects its linked objects, but the object itself can be edited. The locking is temporal, won't remain in the database (at least for now).
- Fixed a lack of hint color updating in the trees when closing a display.
- Fixed problem with saving Pipe and Ball objects, the layer_set_id of which was being overwritten by that of similar objects of other projects.
- Fixed right-click on windows (finally!).
- Fixed dragging points off layer limits. For backbone points, when dragging beyond the screen the object will lock and a new mouse-pressed-dragged event will have to happen to move it again. Adjusting points will follow mouse within layer limits.
- Fixed lack of translation of profiles, pipes and balls when exporting to .shapes and .svg.
- Fixed problems with window packing. For a best experience use java 1.6.0 for linux (although java 1.5.0 works reasonably well, and 1.4.2 is usable).
2006-07-18 - 0.3d released
- Added a layer slider, akin to the stack window slider for slices in a regular ImageJ stack.
- The labels for each snapshot panel now show the name of the enclosing object and the complete name (when too long) in a floating tip text.
- Fixed a bug that affected both pipe and ball objects and disabled the autocommit -changes where not being saved after a pipe or a ball had been dragged or its color changed.
- Fixed a bug that repainted snapshots incorrectly for RGB images when the opacity was not at 1 for all channels.
- Fixed the creation of too many shutdown lock threads.
2006-07-13 - 0.3c released
- Fixed locking problem when reopening a project with pipes.
2006-07-06 - 0.3b released
- Much faster repainting by several orders of magnitude. Repainting is now multithreaded, plus snapshots are used if magnification is at 25 % or lower. For memory saving purposes, the awt.Image is created as small as possible (according to current magnification), and recreated only if it's not large enough when needed. Navigator is multithreaded as well.
- Waiting cursor added for lengthy repaints.
- Added key bindings for importing images: shift+alt+i to import an image, and alt+i to import the next image in the same folder.
- Moving the mouse over the canvas will not show the pixel value except when at 100% magnification or higher, to avoid loading large images (and thus big delays) just for that.
- Rotate 90 and 270 degrees, and flip horizontally and vertically and entire layer or layer set (right-click, contextual menu, Display, Rotate ...)
- Added key bindings for moving up (page up), down (page down), top (home) and bottom (end), as in Inkscape.
- Fixed minor bugs with move up/down.
- Fixed repainting bug in the snapshots column.
- Fixed a bug that prevented the last ImagePlus from being flushed and thus corrupted the flushing of snapshots when attempting to free lots of memory.
- Make flat image runs in a separate thread. In addition, options are provided to generate a grayscale or an RGB image.
- Space bar toggles transparency to 50% and back.
- Improved quality of the grayscale flat image by applying a proper index color model instead of the default.
- Added an Autoresize canvas/LayerSet option in the submenu Display, to optimize space usage. This function crops the canvas to the minimal size possible without cropping away any images, profiles or other floating elements.
- Improved key listening, i.e. key bindings should work no matter which Display element has the focus.
- Tested in these platforms:
Ubuntu Linux x86 java 1.4.2_12-b03, 1.5.0_07-b03 and 1.6.0-beta-b59g
Kubuntu Linux ppc java IBM-1.4.2-ppc
MacOSX(TM) 10.4.7 java 1.5.0_06
Windows(TM) XP SP2 java 1.5.0_06
2006-06-02 - 0.3a released
- Mathias Buehlmann and Stephan Nufer have joined as developers and will provide tools for snapping images, autostiching large image sets, and easier, semi-automated outlining.
- Reorganized classes in subpackages for the Computer Science oriented people not to get lost in the source code.
- Fixed several issues with pipes not repainting when dragged.
- Fixed the dragging of the entire linking group when using arrow keys on the selected object.
- Added a new 3D previewer, a most pleasant and straightforward task thanks to Kai Uwe Barthel's ImageJ3D package.
- Added the ability to export to Scalar Vector Graphics format, which preserves the linking, grouping and coloring. See the manual at Exporting 3D. A proper Blender importer plugin is on the way.
- Updated the manual, with hints on how to fine tune the database for an optimal performance.
2006-05-20 - 0.2d released
- Double-click a project tab to rename the project (or right-click the project root node and select "Rename...").
- Disabled the removal of non-empty layers.
- Disabled the removal of images that are part of a stack, but the whole stack is removable if none of the images is linked to objects other than images. In addition, options are provided to remove empty layers while removing the stack.
2006-05-18 - 0.2c released
- Fixed problems with class names when looking them up, introduced when packaging in 0.2b.
- Packaged the application into the ini.trakem2 package to avoid class name collisions (thanks to Wayne Rasband for reporting on the issue).
- Faster repainting.