Thursday, November 6, 2008

Pragmatic Remote Sensing

As I pointed out in a previous post, in the computer science field, may attempts have been done in the recent years to improve software quality by being rational in the process.

Being rational here is just being pragmatic in order to use techniques that work for you, your team and your project.

When I see many remote sensing scientists present their results and their research objectives, I wonder if the pragmatic way could help improve the results and the benefits for the final users.

Of course, fundamental research has to be conducted in the signal and image processing fields. New theoretical approaches are needed to overcome many challenges in remote sensing image processing. That being said, I often see people trying to develop very complex (and complicated) theories and techniques in order to solve problems which may find a solution using state of the art computer vision algorithms.

In the recent years, the increase of geometric resolution of sensors has made available images which are more similar to data used in robotics or industrial vision than to classical satellite imagery.

The problems we need to solve for this kind of data may benefit from solutions developed in other image processing application fields. For instance, counting objects with simple shapes (rectangular buildings, vehicles, isolated trees) is a problem which has been solved in industrial vision or in biological image processing (counting cells, for instance).

Another point that we should bare in mind is that today's computer power allows to perform in real time operations which took minutes not long ago. This opens up the field of semi-automatic and interactive approaches for image processing. You can see one example of implementation of an object segmentation application using the ORFEO Toolbox here.

The idea here is to use the operator in the processing steps where the task is too hard for the computer. You will agree with the fact that this is a good complement to the approach of using the computer for tedious tasks for the operator.

As a conclusion, I would say that pragmatic remote sensing should be applied as the first step when trying to solve a real problem for an end user. Only if a straight-forward solution (using state of the art computer vision algorithms, choosing the good balance between manual and automatic approaches) can not be found, a more complex approach should be investigated.

Of course, pragmatic remote sensing won't add a line to your publications list, but may solve a real problem.

Monday, November 3, 2008

Pragmatic programmers

This is a blog on remote sensing image processing, not a blog on programming or computers. However, if you want to do efficient remote sensing image processing, you are often led to do some programming yourself.

Programming is a thing that I like very much. High quality, bug free, efficient programs is something I like to use. Since I am using many of my own programs, I try to use good approaches for this.

Of course, ORFEO Toolbox is my library of choice. It relies on many interesting concepts as object orientation, generic programming, streaming, multi-threading, etc. These concepts invite the programmer to write good code, but they may not be enough. Many tips and techniques have to be applied in order to be happy with your code at the end of the day.

I have found 2 interesting bibliographic references from the Pragmatic Programmer which are worth reading:

1. Practices of an Agile Developer
2. Ship it!: A Practical Guide to Successful Software Projects

These 2 books are very easy (and fun!) to read and give many hints on how to proceed to produce good code.

Wednesday, August 27, 2008

New sensors, new missions, new challenges in VHRRS

Very high spatial resolution earth observation systems are becoming available in both the active and the passive sensor fields: Quickbird, Worldview, TerraSAR-X, Cosmo Skymed, Pleiades, etc.

Although spatial resolution is catching the attention of many end users, there are other dimensions where resolution is increasing and allowing the access of new kinds of information. These dimensions are the spectral one and the temporal one.

The spectral dimension is usually limited to the visible plus the near infrared, but more and more systems are extending these capabilities to a superspectral (<20 bands) and hyperspectral sampling. One can also make the analogy between the increase of spectral bands in optical systems and SAR systems with increased polarimetric capabilities.

In the temporal dimension, thanks to constellations or to specific orbital configurations, revisit times of 1 day or even less are going to be available. Therefore, the monitoring of quickly evolving phenomena will be possible.

These new sensors have been developed in order to fulfill user requirements in terms of applications. However, new applications and uses will be imagined by remote sensing scientists as it has been the case in the past (the use of ERS-1 for SAR interferometry, the water color products derived from SPOT-Vegetation, etc.).

Beyond the use of a given sensor or system for applications for which it has not be designed, the great amount of newly available data with high resolution in different dimensions (spatial, spectral, temporal) allows us to imagine new synergies between different types of data.

Finally, the availability of spatial and geographical information is steadily increasing. From professional and commercial data bases to free (Google Earth, Virtual Earth, SRTM) an even open ones (Open Street Map, Geo Names), many sources of high quality data are available to users for fusion and synergy with remote sensed data.

On Monday 8th September I will be givin a talk about this subject in the International Summer School on Very High Remote Sensing in Grenoble, France.

The talk will give a detailed overview of Very High Resolution Remote Sensing in its 3 dimensions (spatial, temporal, spectral). New sensors and upcoming missions and systems will be presented. The new challenges in terms of image processing, data synergies, potential applications and end-users expectations will be analyzed.

Saturday, July 26, 2008

ORFEO Toolbox (OTB) on YouTube

Emmanuel Christophe has produced a very interesting video about ORFEO Toolbox.

The animation has been generated using an open source tool called Code Swarm http://vis.cs.ucdavis.edu/~ogawa/codeswarm/
. You can watch it here:


This video shows OTB's history in terms of change in source code. Each dot represents a file gravitating around the developer who edited it.

It is interesting to note the increase of activity during the weeks before a release and the decrease during summer holidays (the development team lives in France ...).

Anybody wants to join the adventure?

Saturday, July 19, 2008

Summer School in Very High Resolution Remote Sensing

You may be interested in the upcoming 2008 Summer School on Very High
Resolution Remote Sensing which will be held in Grenoble, France, over a
week (September 8-12).


I will be giving a talk about "New sensors, new missions and new challenges on very high resolution remote sensing imagery".

It is a pleasure for me having been invited by the organizing committee led by Jocelyn Chanussot to participate with international experts as:
  • Lorenzo Bruzzone, University of Trento, Italy
  • Paolo Gamba, University of Pavia, Italy
  • Antonio Plaza, University of Extremadura, Spain
  • Kostas Papathanassiou, DLR, Germany
  • Irena Hajnsek, DLR, Germany

CNES will take care of organizing lab sessions using the ORFEO Toolbox
(an open source library for remote sensing image processing algorithms developed by CNES).

You can find more information about the program and the registration procedure here.

OTB Live CD World Release

Last week took place 2 of the main remote sensing symposiums at the international level: IGARSS (in Boston) and ISPRS (in Beijing).

The OTB Team took the chance and 100 live CDs with the last version of OTB where distributed in Boston and Beijing. At the end of the week we still had some unhappy people asking for their sample when there where no CDs left!

We hope that the Live CD will allow people to test OTB easily and that they will find it useful for remote sensing image processing.

Saturday, November 3, 2007

OTB 1.6 is available

It's been a long time since I wrote my las post. This is mainly because I have been very busy with the new release of ORFEO Toolbox.

ORFEO Toolbox (OTB) is an open source library of image processing
algorithms. OTB is based on the medical image processing library ITK and
offers particular functionalities for remote sensing image processing in
general and for high spatial resolution images in particular. OTB is
distributed under a free software licence CeCILL (similar to GPL) to
encourage contribution from users and to promote reproducible research.

You can go to <http://otb.cnes.fr> and follow the download link there.

With this new release, we have started to seriously pave the road
towards OTB 2.0. As you will notice, the OTB Development Team has worked
very hard in order to make available plenty of very interesting things:

- Geometric sensor modeling, cartographic projections and SRTM/DTED DEM
handling using OSSIM.
- Vegetation indices plus encapsulation of the 6S Radiative Transfer
Code, which will be used in OTB 2.0 for radiometric calibration.
- Integration of external contributions: Bayesian image fusion (J.
Radoux, UCL), Stochastic Expectation Maximization and user defined SVM
kernels (G. Mercier, ENST-Bretagne).
- Several new demo applications: road network extraction, interactive
registration, ortho-registration and enhanced viewer.


The detailed documentation, which now includes a tutorial section, can
be downloaded also from <http://otb.cnes.fr>. The PDF file is 540 pages
long, so think twice before printing it (then, choose not to print it).

For details on what is new in this release, se below:

-------------------------------------
OTB-v.1.6.0 - Changes since version 1.4.0 (2007/10/25)
-----------------------------------------

*Applications:

- Added the otbImageViewerManager application which allows to
open multiple images, configure viewers and link displays.

- Added the otbRoadExtraction which demonstrates the road
extraction algorithm implemented in the FeatureExtraction
module.

- Added the otbOrthoRectifAppli application which allows to
ortho rectify images in command line using the brand new
Projections module of the Orfeo ToolBox. Old
ortho-rectification application has been moved to
otbPseudoOrthoRectif.

- Added an option in CMakeLists.txt to use VTK or not (enable
or disable the following application).

- Added the Pireo registration application (VTK needed).

*Radiometry:

- The 6S Transfer Radiative Code compiles within OTB.
- Added the Radiometry directory, containing everything that
has to do with image radiometry.
- Added the NDVI and ARVI (3 input bands) vegetation index
filters.

*Projections:

- Added the Projections directory, containing everything that
has to do with image projections.

- Added an otb::DEMHandler to fetch the elevation value in
SRTM/DTED directories.

- Added an otb::DEMToImageGenerator to generate an elevation
map.

- Added an otb::OrthoRectificationFilter to perform
orthorectification of geo-referenced images.

- Added the forward and inverse sensor model projection.

- Added several map projection transforms (Eckert4,
LambertConformalConic, TransMercator, Mollweid, Sinusoidal,
UTM)

*Fusion:

- Added the Fusion directory, containing everything that has to
do with image fusion.

- Added the otb::BayesianFusionImageFilter, a pan-sharpening
filter which algoritm has been kindly contributed by Julien
Radoux.


*Learning:

- Added methods to access the alpha values, the number of
support vectors, the support vectors themselves, the distance
to the hyperplanes.

- Added the otb::SEMClassifier, implementing the Stochastic
Expectation Maximization algorithm to perform an estimation of
a mixture model.

*ChangeDetection:

- Added the otb::KullbackLeiblerDistanceImageFilter to compute
the Kullback-Leibler distance between two images.

- Added the otb::KullbackLeiblerProfileImageFilter to perform a
multi-scale change detection using the Kullback-Leibler
distance.


*MultiScale:

- Various name changes and bugfixes in the morphological
pyramid segmentation classes.

*BasicFilters:

- Added StreamingVectorStatisticsImageFilter to compute
the second order stastics on a large vector image.

- Added the MatrixTransposeMatrixImageFilter to compute
the product of the matrix of vector pixels from image 1
in rowwith the the matrix of vector pixels from image 2
columns for large vector image.

- Added the otb::VectorImageTo3DScalarImageFilter which
transforms a vector image into a 3D scalar image where each
band is represented in a layer of the 3rd dimension.

- Added the otb::ImageListToVectorImageFilter and
otb::VectorImageToImageListFilter to convert a vector image
from/to an image list.

- Added the otb::ImageListToImageListApplyFilter which applies a
given scalar image filter to a list of images

- Added the otb::PerBandImageFilter, which applies a given
scalar filter to each band of a VectorImage. This is not the
optimal way for most processings but it allows the use of
almost every scalar filter on
vector images.

- Added the otb::StreamingResampleImageFilter, which is a
streaming capable version of the itk::ResampleImageFilter.



*Common:

- Added an otb::Polygon, which represents a closed polyline on
which intersection or point interiority can be tested.

*IO:

- Added an otb::DEMHandler to fetch the elevation value in
SRTMor DTED directories.

- Added an otb::DEMToImageGenerator to generate an elevation
map.

- Added a new tiling streaming mode.

- Added the otb::ImageGeometryHandler, which allows to handle
seamlessly the image geometry information.

- Fixed a bug in the otb::MSTARImageIO.





*Documentation:

- Added various documented examples in the SoftwareGuide for
the new classes.

- Added a Tutorial section in the SoftwareGuide.

*Utilities:

- Added the 6S library which will soon play a role in the
radiometry module.

- Updated the internal version of ITK to 3.4.0.

*Platforms:

- Fixed the random segfault of
otbInteractiveChangeDetectionAppli under Visual 8.0.



-------------------------------------------------------------------

Do not hesitate to use the users' list
<http://groups.google.com/group/otb-users> if you need support, or
contact us directly at <otb@cnes.fr>.

Enjoy OTB!