ImageJ is a Java application for processing images in a scientific and academic context. It is built in Java, which it means it can run on any platform that supports at least Java 1.1, which makes it extremely cross-platform, as a wide range of devices and operating systems support it. It can also be run as an in-browser applet.
Unlike pure viewing apps like FastStone Image Viewer, or image editing apps like PhotoPad Image Editor, ImageJ is intended for analysing the information in an image, such as measurements and colour distribution.
Complete control of the fine details
ImageJ allows you to manipulate the images you are working with, zooming in or out as much as 32x, while still being able to provide the same suite of tools at the level of magnification. It can help you distinguish between varying degrees of colour difference with simple threshold management, as well as measure distances on things like relief maps.
The app is used in many academic and scientific settings because of its high degree of accuracy, but it is also open-source, which makes it completely free to use. This also means that the source code is available, and as a result, there are many applications out there that have branched away from ImageJ, such as Fiji, and AstroImageJ.
A powerful too but not beginner-friendly
As you might expect from a tool that is primarily used by students and scientists, ImageJ is not the most user-friendly application. Many of the settings are quite complex, and much more difficult to understand for a user who is coming into the app for the first time. That being said, there is plenty of community-based support.
One of the advantages to ImageJ, however, is that is it relatively easy to develop plugins for, and so there is a great deal of additional functionality that can be added to the app through the available plugins. Not to mention the option to write your own custom plugins if you have the know-how.