[GRASS-user] Is "i.cluster" an implementation of the ISODATA algorithm?

Nikos Alexandris nik at nikosalexandris.net
Tue Oct 30 16:48:35 PDT 2012


> >>> I wonder why the term ISODATA [2] is not to be traced anywhere in the
> >>> GRASS manuals, nor in the GRASS book (3rd ed.).  Can someone confirm
> >>> that i.cluster is an(other) implementation of the ISODATA clustering
> >>> algorithm?


> >> I search in my inbox and found some earlier discussion with the
> >> Subject: "Re: [GRASS-user] Re: algorithm used in i.cluster", see
> >> below.

> >> PS: Still we need a text snippet to improve the manual...

> > Things to keep in mind from the archived discussions (below):

> > - the ISODATA algorithm (Ball and Hall, 1967) is a common modification of
> > the K-means algorithm

> > - the algorithm implemented in the "i.cluster" module involves merging of
> > classes (I_cluster_merge) though no splitting function seems to be
> > implemented


> To add: i.cluster output is also not equivalent to ISODATA in so far as
> it does not classify all pixels, but only creates signature files for
> the classes. Classification is then done by i.maxlik which is not
> equivalent to ISODATA. It might be an interesting addition to i.cluster
> to work with all pixels (not only a subset) and to create an output
> assigning each pixel to a given class which would be close (but not
> equal) to ISODATA output.


please correct me if I am wrong.  I feel that the above sentences draw 
actually an unnecessary confusion.

The first step is to cluster pixels according to their (similar, spectral) 
properties.  The second step is to classify the clusters, meaning labeling of 
the resulted clusters.   So, I don't see were confusions might arise, apart 
from the question whether "i.cluster" is an exact implementation of the 
ISODATA algorithm or not.

- ISODATA is a clustering algorithm, not a classification algorithm per se -- 
skimming through Richards book (1999) [1], pages 182, 189, 225.  And the 
"i.cluster" module might not be identical to the ISODATA clustering algorithm, 
yet, it performs clustering. So, both do the same job, most likely in a more 
or less similar way.

-  "i.maxlik" performs the classification of the clusters, which is not a 
clustering process. Thus, the module can/should not be identical to the 
ISODATA clustering algorithm.  I might have missed something (skimming through 
the manuals), but I didn't read anywhere that "i.maxlik" is performing 

Your attention to details is highly appreciated.
Thanks, Nikos

[1] @BOOK{Richards1999,
  title = {{{R}emote {S}ensing {D}igital {I}mage {A}nalysis. {A}n 
	3rd revised and enlarged edition.: xxi + 363 pp.}},
  publisher = {Berlin, Heidelberg, New York, London, Paris, Tokyo, Hong Kong: 
  year = {1999},
  author = {JA Richards and X Jia},
  pages = {363},
  edition = {3},
  note = {Hard cover},
  isbn = {3-540-64860-7}

More information about the grass-user mailing list