There are several open source programs available for GIS analysis and image processing, that are very good alternatives to commercial software.
Concentrating on cross-platform software, I will try to summarize GIS and image processing programs, highlighting the main features thereof (in the following screenshots, the showed image is a Landsat 8, available from the U.S. Geological Survey).
- GRASS GIS is a 30 years GIS software with several tools for image processing. Vector and raster data are organized in location (a geographic extent defined with a coordinate system) and mapset (a set of thematic or project data, which is geographically inside the location), which allow for the simultaneous work in the same project. It has a powerful command line which is useful for scripting, and allows for the integration in other programs. It provides a supervised classification module with the Maximum Likelihood algorithm. The official user guide is available here.
- Orfeo Toolbox is an image processing software that has several algorithms for image filtering, image segmentation, and image classification with K-means and SVM (Support Vector Machines). It is mainly a framework which can be used through command line. Also, there is an official interface that allows for the interactive execution of application. However, it provides the integration with other software through a Python interface. The official user guide is available here.
- SAGA is a GIS software which runs on Linux and Windows operating systems. It has a good software interface, which allows for the image processing and the analysis of spatial data. In particular, it has several algorithms for supervised classification such as: Maximum Likelihood, Spectral Angle Mapping, and Minimum Distance. It works with single band images, therefore if you have a multispectral image you need to split it into single band images. It also provides a useful command line for the algorithm execution within scripts. The official user guide is available here.
- InterIMAGE is a framework specialized in the knowledge based classification of remote sensing images. The official user guide is available here.
Every open source program listed above is stand-alone, but the most powerful characteristic that they have in common is interoperability, mainly through a command line interface. This allows for the integration of their functions in scripts or plugins, increasing the potentiality of analyses from GIS to remote sensing.
- QGIS is a GIS software with a user friendly interface. It integrates a variety of modules of the GRASS GIS framework. Also, the QGIS API (Application Programming Interface) allows for the creation of scripts and plugins in C++ and Python, which add several functions to the basic application. The official user guide is available here.
There are also several GIS programs that are based on Java programming language, which can manage spatial data and perform geospatial analyses, such as the following list:
- OpenJUMP. The official user guide is available here. (In the following screenshot, an error prevented the raster from being loaded).
However, from my point of view, Java based GIS programs still lack some features in terms of interface usability, compared to other GIS programs such as QGIS.
The above list does not include several other GIS alternatives, because it is beyond the purpose of this post. For a comprehensive list, including WebGISs and geospatial libraries, see http://opensourcegis.org/. Other interesting open source alternatives are available at http://joinup.ec.europa.eu/software/all.
It is worth mentioning the SEXTANTE framework, originally developed for the Java "family" of open source GIS programs, which is now developed as a featured plugin for QGIS too. It provides several geospatial algorithms, but in particular it allows users to run external applications (such as SAGA, Orfeo Toolbox, and GRASS GIS) from within the GIS program. In particular, the Semi-Automatic Classification Plugin for QGIS uses the SEXTANTE framework for the purpose of accessing to the segmentation function of Orfeo Toolbox and the classification function of SAGA.