We would like to state that we have no commercial or scientific interests. All we want is to help the community to improve research and in this way help conservation of endangered species. We do this (in our spare time) simply because we enjoy it and want to contribute.

All work is done for free, but as owners of small enterprises, working on the tool also means no income whatsoever. Donations or grants for future development are most welcome.


Follow us on

1. Will I3S work for my species?

First make sure that the following applies:

  • Your species has three suitable (see Q3 for details) reference points you can find in all images.
  • As a human you are capable of recognizing individuals. If the markings on your species are unclear or absent I3S will not be able to recognize individuals either. It is an application not an oracle.

Next, the only way to find out is to do an experiment. Annotate of 30 or more individuals 2 or more images and put them in the reference database. Different sides of an animal, e.g. left and right side of a shark, count as different animals from an experimental point of view. Compare all annotated images against the entire database and see whether images of the same individual turn up at the top of the list presented by I3S. If you use I3S v4.0 or higher you can find evaluation tools in the Expert menu to help you with this tedious task. Please read the manual on how to make the expert menu available and how to use the evaluation tools.

2. Which I3S should I use?

Currently there are four I3S applications available: Classic, Contour, Spot and Pattern.
If your species has features such as the fluke edge of a whale’s tail or the edge of a dorsal fin, use Contour.
If the features are similarly shaped spots (e.g. whale shark), use Classic.
If the spots are irregular in size of shape, use I3S Spot (Manta).
If the features are really hard to annotate consistently are the features are not proper spots, use Pattern. Do not choose Pattern because features are extracted automatically and you are too lazy to annotate properly. Automatic feature extraction usually comes at a price, most likely less accuracy in difficult situations with reflections, overexposure, murky water, or large angle variation. The human visual system is still very hard to copy with automatic techniques and you should use Pattern because it is not possible or practical to annotate manually.

3. How should I select the three reference points?

To be able to correct for differences in viewing angle, rotation and scaling, the user is always required to point out three fixed reference points. The reference points should satisfy the following requirements:

  1. Their exact location is consistently and clearly distinguishable.
  2. Visible in all images. In some cases the reference point might be just outside the photo. I3S allows you to point out reference points outside the image area. Obviously, you should only do this when you are quite certain about the location.
  3. The triangle made up by the three reference points should cover most of the region of interest used for identification. Ideally the triangle should have angles of 60 degrees. In most cases this will not be possible, but you should try to get as close as possible for optimal results.
  4. Select a body part which is as little as practically possible susceptible to deformations caused by bending or curving of the body. For example, both a turtle’s head and its legs can be used for identification. However, a head is a much better idea as it will not curve and is much steadier than a fin. The same is true for fish like sharks where the area around the pectoral fins is less likely to curve compared to the area around the tail.

If the entire body or a non-rigid area is used for identification, e.g. newts or lizards, try to put your subject in a construction or rig where the identification area is always in the same position.

4. What is the best way to take the images?

These are our guidelines:

  • Take the photos as perpendicular as possible to the area used for identification with all the reference points visible.
  • Make sure to make photos in high quality (i.e. no strong compression settings) and do not reduce the resolution as this might reduce the possibilities for automatic feature extraction or future developments.
  • Avoid local overexposure in the image. Do not use direct flash, but use indirect flash if possible instead. Shield from direct sunlight or lamps if possible.
  • In case of a quickly moving species, you could consider to use HD video and select the proper frame from the video sequence.
  • You can optionally consider to crop the image to contain only the relevant part. Make sure you do not reduce resolution and the tool you use keeps all useful EXIF-information such as date and time.
  • If you photograph animals outside of the natural habitat, e.g. juveniles in a breeding facility, or when an animal is captured, put your subject in a construction or rig where the identification area and camera are always in the same position, and lighting is controlled and uniform.

5. Why does the program need 3 reference points? Why can’t I have 4 or 5 reference points?

The mathematical transformation to map the features of one animal onto another requires exactly 3 pairs of mutual reference points. You could add a fourth reference point and let I3S decide which set of 3 reference points to use. However, this would require that all images have four reference points visible, otherwise you cannot compare two images where A has only ref 1, 2 and 3, while B has ref 2, 3 and 4 annotated. As it is often hard enough to find 3 reference point locations it will make I3S harder (and more confusing) to use in practice if we would add more reference points.

6. I3S shows error messages, what does this mean?

This really depends on the type of errors. However, common causes of errors during installation and operation are:

  • User Account Control is on and prevents I3S to write in directories like Program Files.
  • You do not have the latest Java runtime engine (JRE). Download the latest version at java.com Make sure to use the 32-bits JRE even if you have a 64-bits Windows.
  • You do not have administrator privileges.
  • You have installed your I3S reference database in C:\Program Files or C:\Program Files (x86). Please make sure that your data directory is in a location available for writing, i.e. C:\MyData

If this does not help, please contact us at and make sure you have the exact text of the error message and the data (image and fgp file) which cause problems available. To prevent spammail, our email address is an image.

7. What is the difference between my own database and the reference database?

I3S compares an unknown image to a list of known images. This list of known images is the reference database. It is up to you to decide which images you put in the reference database. In case you use your entire photo database as reference database this may mean that some individuals may have 20 images in the reference database while others only have one image. All experiments with large datasets indicate that there is an optimal number of reference images for each individual. This optimal number seems to be 3 or 4.

Please make sure to use good quality images for the reference database with some slight variation between the images, e.g. angle or light conditions.

8. What are the alternatives to I3S?

We don’t really know. We are not working in the field ourselves, so we only hear a few requests and we try to help where we can. I3S is completely free, including source code. The philosophy behind I3S is that the user is supported but always required to make the final decisions. You will always have full control over your own database. Further, I3S is relatively light weight and can run on virtually any laptop without internet connection required, so you can use it anywhere and anytime you want.

9. Can I run I3S on Apple/Android/Linux?

All I3S versions consist of a part written in Java and a part written in C/C++. The former is for the interfacing and general application management. The latter is for computationally intensive processing. The Java part should work directly on other platforms with a Java Runtime Engine, although we did not test it. The C++ code requires porting as some parts are specifically Windows-dependent.
Examples of Windows dependency in the C++ code are:

  • Retrieving information from the Windows registry (environment variables, test whether user account control is turned on).
  • Reading / writing integers, floats and doubles in the Java format (swapping between Big and Little Endian).
  • Making the dll interface with Java via JNI.
  • Retrieving directory listings and file information.

As we do not have sufficient experience with developing software for other platforms, you will have to do this yourself, although we are always available for questions and advice.

10. What do I do if my question is not answered above?

Contact us directly at

To prevent spammail, our email address is an image.