Go back to ObjectJ Examples


Otoliths and tree rings


This sample project was written to date otolith growth rings; it also can be used for tree rings.

It uses ImageJ in combination with the ObjectJ plugin. 

In the tutorial below, I will use tree rings (thanks to Marco Bascietto) for further explanation. This project was funded by the Institute for Marine Research, Norway




Download zipped sample project





Otolith (courtesy Frank Beuchel)



Tree ring project (screenshot)


a) Features:
- Trajectories from many images can be collected within a single project file
- Non-destructive marker points can be randomly deleted or inserted any time

- Automatic and manual ring detection: watch the Movie
- Link makers can be used to continue marking at different places
- Year annotation is available as non-destrucitve overlay
- Output is synchronized to year column if in Table mode , or shown in list mode.

- Scaling in real units (mm or cm) also for non-tiff  files


b) Installation:

- put objectj_.jar into the plugin folder of ImageJ .

- open the project file with the .ojj extension- or drag it into the ImageJ main window.

- ObjectJ menu is now visible, showing macro commands listed below.



c) General remarks:


An object is a sequential trajectory that starts with a spot of

type Begin,  followed by any number of spots of type Ring or Link


While an object is *open*,  new points can be appended. An open object

has a numer label with asterisk, such as 77*. It can be closed by the

*Close* button (ObjectJ Tools), or with the return key. An object can be re-opened

by double-clicking it with the Finger tool (ObjectJ Tools).


An object can be selected by single-clicking any of its points with

the Finger tool.


A point can be moved with the triangle tool while alt key is down


A point can be deleted  with the pistol tool while alt key is down


Marking must be performed from inside to outside (pith to bark);




d) Macro commands:


- Some of these macros must be invoked with a function key such as F2, while

            the mouse is occupied by positioning the cursor somewhere on the image.

            Therefore make sure that the ImageJ responds to Function Keys.

            (On OS X, it may be necessary either to keep down the *fn* key, or otherwise

            to modify the System Preferences)


- Start a Sequence [F1]

            same as manually closing any open object and switching

            to item type *Begin*. You are ready to start clicking a sequence

            in any linked image.


- Auto-detect rings [F2]

            Invoke this macro only via shortcut key (not menu),

            while the cursor is at the desired position.

            Keep down F2 (=autorepeat) and move cursor several rings apart:

            A segmented line shows auto-detected rings as vertices.


- Mark Detected Rings [F3]

            converts the segmented line into real markers.

            Choose this command to confirm the automatic results.


- Enter year [F4]

            The known year of late wood can be assigned to first or last marker.

            Use negative number such as -1999 to indicate *last marker*.

            Dating is applied to the open object, or otherwise, if no

            object is open, to the currently selected object.


- Show /Hide annotation [F5]

            press once or twice to draw little circles with connection line and

            year annotation of latewood every 5 years - or to remove them.


- Set Link Marker[F6]

            Invoke this macro only via shortcut key (not menu),

            while the cursor is at the desired position.

            Same as manually switching to *Link*, setting a marker,

            and switching back to *Ring*.

            Use a Link when you want to continue marking at a different

            angular position of a ring.


- Insert Spot [F7]

            Invoke this macro only via shortcut key (not menu),

            while the cursor is at the desired position.

            An object must be selected and in front. A Ring marker

            is inserted at cursor location, and the connection line

            is switched on. Keep down alt key to use *Link* instead of



- Check for Errors

            Consistency check: there may not be sharp bends (except at link

            Markers, and trajectory must start with *Begin* marker .


- Output (List)

            Numeric output of all ring distances and years, using one

            line per ring


- Output (Table)

            Numeric output of a 2D table where ring distances are synchronized

            to leftmost *Year* column.