\begin{article}
\title{Opticks Open Source Remote Sensing and Image Processing Software}
\subtitle{A Community College GIS Program, and Collaboration}

\author{Nathan Jennings\\
American River College, Sacramento, California, USA, nate@jenningsplanet.com} 

\maketitle 

\section{Abstract}

The author has created and taught a remote sensing and digital image
processing course as part of the core curriculum in the Geographic Information
Systems (GIS) Program at American River College since 2005.  Until recently,
the course was taught using proprietary digital image processing software
suitable for processing remotely sensed imagery.  As a result of tough economic
times for the college and the Sacramento region, alternative “software tools”
were investigated for viable alternatives to use within the remote sensing
course.  The Open Source Software community was researched and Opticks, an open
source digital image processing software for remotely sensed imagery, was
chosen because of its useful user graphical user interface, breadth of common
image processing functions similar to those found in proprietary image
processing software packages, ability to use a variety of remotely sensed image
sensor formats, ability to integrate other geospatial information (such as
vector data), the ability to continue to customize and enhance the
functionality of the software, and strong user and development support.  

The author reviewed a number of open source software packages that provide similar functionality to proprietary image processing software packages as well as its relative ease of use and compliments the current material taught in the remote sensing course at American River College.  Opticks was found to have the best overall capability for a “free” open source software package that is suitable for a community college introductory remote sensing course.

As Opticks is continuing to be used within the remote sensing course at American River College, the author has formed an informal relationship with Ball Aerospace staff (the developers of Opticks) to assist with creating additional functionality with RADAR data, serve as a Google Summer of Code mentor since 2010, write a functional user guide, and provide feedback to the developers to enhance the software.  As a result, the relationship has fostered a mutual benefit to Ball Aerospace, the American River College GIS Program, and for students seeking knowledge and experience in the remote sensing field.

\section{Introduction}

American River College is one of four campuses in the Los Rios Community College District in Sacramento, CA and has offered an Associate of Science degree and certificate in GIS for a number of years.  The GIS Program has gained world-wide recognition as a high quality higher education program to gain “real world” and hands on knowledge and experience in the GIS and remote sensing field and its application to many sectors of the local, regional, national, and international business communities.  The American River College campus serves as the premiere campus where students come to learn and obtain useful GIS and remote sensing skills as well as critical thinking, problem solving, and collaboration that the job market demands.

In 2005, the author designed and created the Introduction to Remote Sensing and Digital Image Processing course that served to fill a long-time gap in the GIS Associate of Science and GIS Certificate programs.  In the initial years of the remote sensing course a proprietary digital image processing software package was used as the primary software tool.  In more recent years with tough economic conditions for both the college and the region, alternative software solutions were required to ensure that the remote sensing course remained a challenging and useful course in the GIS Program.  

The remote sensing course does not have any prerequisite courses.  As a result, students who enroll in the class are often not accustomed to remotely sensed imagery (satellite and aerial imagery), digital image processing, GIS, or any related software tools.  Although a number of open source software solutions with long user and development histories are available, many are not tuned to the “novice” software user.  When deciding on a high quality open source software solution for this course, Opticks, developed by Ball Aerospace, was chosen.

\section{Remote Sensing and Digital Image Processing Software in the Community College}

For many years proprietary digital image processing software (such as ERDAS, ENVI, PCI, and TNT MiPS) has been the “typical” software found in remote sensing courses at higher educational institutions.  Remote sensing and image processing principles, concepts, and methods have typically been taught at four year and/or graduate institutions and are often not found in a community college curriculum since these course are often specialized and are often taken by students in upper division courses.  In addition, four year colleges and universities typically have larger budgets to provide appropriate software for teaching these courses over community college computer labs.

American River College began by providing labs with proprietary software and has since had to evaluate other alternatives.  Some of the criteria used to choose the Opticks software is based on the following criteria:
\begin{itemize}
\item Ease of use
\item Functionality similar to professional grade remote sensing software
\item Comparable interface to other GIS and/or remote sensing software
\item Available documentation to use the software
\item Ongoing development support from the parent organization
\end{itemize}

A number of open source software packages exist that include remote sensing and digital image processing capability (such as GRASS, OpenEV, and OSSIM) have either a high learning curve or relatively limited functionality without additional compiling, installation of libraries, or add-on modules.  For an inexperienced student in remote sensing, GIS, and image processing software and techniques, using some of the open source software can be overwhelming.  As described below, Opticks provides a full range of common image processing functions as well as more advanced functions such as those related to feature identification and hyperspectral analysis while being easy to use and Opticks continues to add and improve the functionality in their software.

\section{Remote Sensing at American River College}

     The remote sensing course in the GIS program at American River College includes topics related to remote sensing principles and digital image processing techniques.  Many students are looking for practical experience in remote sensing and image processing that can be used in a variety of fields.  Two four year universities in the Sacramento region, UC Davis and Sacramento State, offer a number of classes in remote sensing and image processing and focus more on principles and theory versus practical use of the software.  The remote sensing course at American River College was created as a survey course so that the student can obtain the fundamentals in remote sensing theory as well as obtain actual “hands on” experience with the tools (i.e. software) to analyze remotely sensed imagery.  Knowledge areas covered in the remote sensing course are:

\begin{itemize}
\item Image fundamentals
\item Electromagnetic spectrum and remote sensor sensitivity
\item Remote sensors (airborne, spaceborne, RADAR, LiDAR, hyperspectral)
\item Image enhancement
\item Image classification (traditional unsupervised/supervised/hybrid)
\item Specialized image processing techniques such as texture analysis, image rectification, topographic surface creation, target detection, and feature based image analysis
\end{itemize}

\section{Opticks}

The Opticks software was developed by Ball Aerospace in conjunction with the US Air Force in 2000 primarily to conduct hyperspectral image analysis (Streithorst and Considine, 2011).  Over the next several years Ball Aerospace and the US Air Force provided the core Opticks code as open source software in 2007 (Streithorst and Considine, 2011).  Since then, a number of fundamental software improvements and enhancements have been made.
\begin{figure}{
{\includegraphics[width=\linewidth]
{jennings/figure1}}}
\par \caption{Opticks software interface showing an example Landsat TM (Thematic Mapper) image and Python scripting window}\label{fig.jennings_figure_1}
\end{figure}
           

Figure \ref{fig.jennings_figure_1} shows a typical interface that the image analyst can use to process imagery.  A portion of a Landsat TM (Thematic Mapper) image is displayed.  Landsat is one of many satellite based remote seensors available for image processing.  The right side of the Opticks software provides the ability for the user to add additional toolbars to the interface as well as additional tools such as histograms and a spectral signature window to explore the details of the image (e.g. bands, rows, columns, wavelengths, changing the display bands, data type, etc).  Figure \ref{fig.jennings_figure_1} also shows the Python scripting window that can be turned on where users can directly add Python code to process images using custom algorithms and the Opticks Python module.  In addition, users can run completed Python scripts from this window or through the Wizard Builder to create a button to run a script.  

   Opticks core functionality include many common image processing tasks including, image subset, image filters, band ratios, and band math (e.g. arithmetic computations between bands).  Opticks also includes the ability to create image processing workflows using the Wizard Builder.  Some of the Wizard Builder Processes can easily become part of custom built toolbars and menu options.  Advanced options include unsupervised and hybrid image classificaiton and a series of tools to process hyperspectral imagery.  Additional functionality has been provided through students participating in the Google Summer of Code Program and include feature extraction, RADAR processing, and astronomical image processing.

\section{The Use of Opticks in a Community College GIS Program}

The Opticks software is a primary digital image processing software for the remote sensing course that is part of the GIS Associate of Science degree and GIS Certificate Program at American River College.  As a result of smaller college budgets and a long-term down economy in Sacramento, funding for commercial software is more difficult to fund.  In addition, proprietary software companies are reluctant to provide “free” fully functional student versions of their software to students who are persuing degrees and skills that use their software.  Since the remote sensing course does not require any pre-requisite courses and students are often unfamiliar to image processing and GIS software tools, a “free” and open source and intuitive software, such as Opticks, is an appropriate choice for students who are introduced to both challenging content and digital image processing protocols.  The financial burden to students and to the school is reduced and students can install the software on personal computers so they have ample opportunities outside of the classroom to learn and experience the methods and analytical tools to process remotely sensed imagery.

Opticks has served as an integral part of the remote sensing course offered at American River College.  The software contains many fundamental image property and processing tools for a variety of remotely sensed image formats which are taught as part of the course.  Fundamental image property tools include image format, number of image bands, rows, columns, pixel type, data type, wavelength characteristics, band histograms, changing the band combination display, etc.  Fundamental image processing tools include image contrast, filters, resampling, mathematical expression development between bands (such arithmetic, square root, powers, and a variety of mathematical functions).  The Wizard Builder allow students to build custom multi-step processes, such as unique band ratios to analyze biophysical characteristics.  Normalized Vegeation Difference Index (NDVI), Tasselled Cap, water stress, vegetation stress, biomass quanity, etc are a few examples of common algorithms that can be taught and built using the graphic process wizard without using any special programming methods (Figure \ref{fig.jennings_fig_2}).

\begin{figure}{
{\includegraphics[width=\linewidth]
{jennings/figure2}}}
\par \caption{Opticks Wizard Builders showing the Tasselled Cap algorithm for Landsat 5 imagery}\label{fig.jennings_fig_2}
\end{figure}           


Opticks can  also be used for more advanced image analysis such as spectral signature development and evaluation and image classification (supervised and unsupervised methods).  Students learn about creating, evaluating, and using spectral signatures as part of the image classification process.  The remote sensing course also includes a segment focusing on hyperspectral imagery (images that often contain more than 200 specific wavelengths).  Opticks inlcudes a series of specialized tool for processing hyperspectral imagery.  These include removal of image anomalies, material identification, spectral library comparisons, atmospheric correction, spectral signature creation, and materials identification.  A recent enhancement to Opticks has been a feature identification method that was created by a Google Summer of Code participant in 2010.  Many of these functions are provided through the Spectral toolbar  and extension (Figure \ref{fig.jennings_fig_3}).

\begin{figure}{
{\includegraphics[width=\linewidth]
{jennings/figure3}}}
\par \caption{The Spectral toolbar for Opticks showing a variety of spectral analysis capabilities}\label{fig.jennings_fig_3}
\end{figure}
                              

The author has also produced a functional user guide for Opticks that students can use to begin learning the Opticks software and that can augment the Opticks Help (Figure \ref{fig.jennings_fig_4}).  The user guide  is one of several documents the author has written and provided to students in the remote sensing course.

\begin{figure}{
{\includegraphics[width=\linewidth]
{jennings/figure4}}}
\par \caption{Opticks User’s Guide created by the author}\label{fig.jennings_fig_4}
\end{figure}


\section{RADAR Algorithm Development Using Opticks}

The author recently created a series of speckle reduction (image smoothing) and texture analysis (algorithms that measure how similar or different groups of pixels are from one another in the image) algorithms that are tailored to RADAR (RAdio Detection And Ranging) remotely sensed imagery.  In a separate Google Summer of Code 2010 project, a student also created some additional RADAR processing algorithms.  Both sets of algorithms were developed using the Opticks C++ libaries and the C++ programming language.  Once a code developer learns some of the basic constructs provided by the Opticks development team, developing specific image processing algorithms is relatively straight forward, provided the programmer has a background in image or signal processing, and a strong background in C++.  Many algorithms tailored for remotely sensed imagery can be found throughout image processing textbooks and peer reviewed articles in professional journals.

The author teaches a segment on RADAR image processing in the remote sensing course.  Since the author has a background in RADAR image processing and Opticks did not have this functionality built into the core software, the author was able to develop several fundamental RADAR processing routines that were suitable for an introductory remote sensing course.  Figure \ref{fig.jennings_fig_5} shows a screen shot of the Opticks interface with the custom RADAR Processing module.  The image in the viewer is from a Canadian RADAR satellite, RADARSAT-1.

\begin{figure}[h]{
{\includegraphics[width=\linewidth]
{jennings/figure5}}}
\par \caption{Opticks showing the custom RADAR Processing module showing texture analysis}\label{fig.jennings_fig_5}
\end{figure}

Anyone can develop or expand the functionality of Opticks using the Opticks
libraries and the C++ programming language.  Currently, professional grade
compilers (such as Visual Studio) and the free version (Visual Studio Express)
are supported for Windows development.  Sun Solaris (Sun Studio)  compilers are
supported for Sun Solaris operating systems.  Code developers should have a
strong command of C++, object oriented programming, and digital image
processing experience.  Ball Aerospace staff has a good reputation of providing
constructive feedback and examples for those beginning to learn the Opticks
objects and include both a developer and user forum.

\section{Collaboration with Opticks and the Google Summer of Code Program}

The Google Summer of Code Program is an open source coding program sponsored by
Google.  Open source coding project organizations (such as Ball Aerospace’s
Opticks project) can apply to sponsor one or more “students” to assist with
expanding the capability of the organization’s open source project.  To support
the Opticks Open Source effort, the author has participated as a mentor since
2010 in the Google Summer of Code Program.  In the past two years several
students have participated in the Google Summer of Code for the Opticks open
source project to make contributions to RADAR image processing, feature
detection, and astronomical image processing (extra-terrestrial imagery
focusing on planets, stars, and other space phenomena).  The author has served
as a mentor to the efforts with respect to RADAR imagery since he has requisite
knowledge and skill to evaluate RADAR algorithms and image processing results.
Ball Aerospace staff serves as the primary leads and provide technical
experience with Opticks fundamentals and coding strategies.

\section{Opticks Python Extension}

Recently, the Opticks development team has provided an add-on extension to use Python to develop image processing algorithms.  If a code developer does not need to develop a custom interface or modify the Opticks core functionality, the Python extension is likely an easier method to develop custom image processing algorithms than developing C++ code.  Code developers do not have to “recompile” their code for each new major release of the Opticks software and the deployment of the algorithms can be easier to install for novice Opticks users.  Being both a full time GIS professional for the City of Sacramento and an Adjunct Professor at American River College, the author does not have significant time to develop and redevelop custom algorithms for each release of Opticks.  Python is a more suitable development environment for the author.  The author is currently working on writing the RADAR algorithms Python and the Opticks Python module that were originally developed in C++ as well as some additional algorithms suitable for the remote sensing course.  Figure \ref{fig.jennings_fig_6} shows a portion of the script being developed by the author for the RADAR module.

A set of Opticks Python modules are provided by the Opticks team for Python developers to read and write image formats as well as gain access to specific characteristics of the image (bands, rows, columns, data type, pixel type, wavelengths, etc).  Being able to access these characteristics allows code developers to create special image processing routines that can process imagery on a pixel by pixel basis or performing mathematical expressions between the image bands.  In addition, with the use of additional Python extensions (such as NumPy and SciPy) some statistical expressions are already available that may not require special manipulation of the Python code for some algorithms.  As a result, the Opticks Python extension allows for a full range of additional image processing capabilities without the significant programming overhead and knowledge C++ often requires.

\begin{figure}{
{\includegraphics[width=\linewidth]
{jennings/figure6}}}
\par \caption{Sample Python script using the Opticks libraries}\label{fig.jennings_fig_6}
\end{figure}
\section{Summary}

In the past the author has used ERDAS Imagine as the primary software in the remote sensing course.  ERDAS imagine is a fully functional professional image processing software package.  Much of the functionality found in ERDAS is also found in Opticks.  Both provide basic image processing functionality such as image enhancement, filters, ratios, image subset, and image construction.  ERDAS and Opticks support a multitude of image and sensor formats and data types.  Both provide more complex image processing routines such as hyperspectral analysis and feature based image processing.  Both packages do have a “modeling” capability, although the functionality in Opticks is not as straight forward as that found in ERDAS.  The Opticks software user must become more familiar with image elements (bands, rows, columns, header files, data types) than required with ERDAS.  The current version of Opticks does not support the use of LiDAR data or the construction of topographic surfaces from raw LiDAR data.  Also, Opticks only supports a single unsupervised method (K-Means) and does not have a fully functional “supervised” classification workflow.  Opticks does have a more refined set of methods for hyperspectral and target identification than that of ERDAS.  Despite, some of the lack of functionality of Opticks compared to a proprietary software such as ERDAS, for being a free, open source software, these short comings can be accommodated with the use of ESRI’s ArcGIS software, which American River College has a site license.  Opticks can nearly support the entire knowledge base provided to students in the American River College remote sensing course.
 
Opticks open source digital image processing has been an integral part of the remote sensing class in the American River College GIS degree and certificate programs.  Using Opticks has helped save funding for the school and useful and “free” software for students while being able to maintain a high quality educational experience to students who want to gain knowledge in the field of remote sensing and digital image processing.  Opticks has been a good choice for an educational program, especially for those students who often enroll in the remote sensing course with little or no background in digital image processing, remote sensing principles, or GIS.  The development community at Ball Aerospace as well as external contributors is strong and provide routine updates and improvements that are typically released a couple of times a year.  In addition, with the Opticks open source project in the Google Summer of Code Program additional enhancements have been able to be achieved in a timelier manner than developing them completely in-house by Ball Aerospace.  The author is appreciative to be able to contribute and use to a strong collaborative project like Opticks and that a free and open source solution exists that can be used in a community college GIS program.

The Opticks software and project can be found at \url{http://opticks.org}.  The
American River College GIS program can be found at
\url{http://wserver.arc.losrios.edu/~earthscience/gis.htm} and specific topics
in remote sensing and the course taught at American River College as well as a
copy of the Opticks User’s Guide can be found at the author’s website\footnote{\url{http://www.jenningsplanet.com}} or can be contacted via email at the above address. 

\section{Acknowledgements}

The author would like to thank Kip Striethorst, Trevor Clarke, and Michael Considine, and all of the Opticks team for providing Opticks to the open source community and allowing him to participate in the development of the Opticks software.

\section{References}

ERDAS, Inc. Corporate website, viewed December 12, 2011, www.ERDAS.com. 

Exelis Visual Information Systems, Coporate website, viewed December 12, 2011, www.exelisvis.com.

Open Source Software Image Map, website, viewed December 12, 2011, www.ossim.org. 

OpenEV, website, viewed December 12, 2011, www.ossim.org. 

PCI Geomatics, viewed December 12, 2011, www.pcigeomatics.com. 

Striethorst, K. and Considine, M., Ball Aerospace 2011, History of Opticks, viewed July, 2011, http://opticks.org/confluence/display/opticks /History+of+Opticks.
\end{article}
