Tuesday, November 25, 2008

Buzzwords

In my last post I wrote about Pragmatic Remote Sensing. Today I would like to introduce another concept: Buzz Remote Sensing.

OK, this is just a joke but anyway, I guess one could consider using the following approach: use google to make choices about algorithms.

You may be aware of Google Trends which allows you to compare search words in terms queries at Google. For instance, you can compare the trends of "SVM" (in blue) and "maximum likelihood" (in red). Here they are:


So, there is no doubt about what to choose for a classification. Let's see about clustering. "Mean Shift" (blue) and "K-means" are plotted below:

So if you want to be ahead of time, use the Mean Shift so your papers get easily published.

And we could go on. Imagine you have to build a processing chain for cartographic data base updating using satellite images. The main steps would be:
  1. Image to data base registration (mutual information? feature-based?)
  2. Image segmentation (watershed? morphological profiles? mean shift?)
  3. Feature extraction (geometric invariants? haralik textures? wavelet coefficients?)
  4. Object recognition on images (spatial reasoning?, template matching?)
  5. Supervised classification (neural networks? kernel methods?)
  6. Change detection (image differencing? MAD?)
  7. Saving the vector layers (shapefile? KML?)
Who wants to implement the most fashionable processing chain out there?

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.