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

Angelos Tzotsos gcpp.kalxas at gmail.com
Wed Oct 31 02:32:37 PDT 2012

Hi all,

This is an ISODATA implementation in C, written under GPL by Christos 
Iossifidis, a colleague of mine at NTUA.
Would anyone be interested porting it to GRASS?



On 10/31/2012 01:48 AM, Nikos Alexandris wrote:
> NikosA:
>>>>> 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?
> MarkusN:
>>>> 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
> Moritz:
>> 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.
> Moritz,
> 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
> clustering.
> 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
> {I}ntroduction,
> 	3rd revised and enlarged edition.: xxi + 363 pp.}},
>    publisher = {Berlin, Heidelberg, New York, London, Paris, Tokyo, Hong Kong:
> Springer-Verlag.},
>    year = {1999},
>    author = {JA Richards and X Jia},
>    pages = {363},
>    edition = {3},
>    note = {Hard cover},
>    isbn = {3-540-64860-7}
> }
> _______________________________________________
> grass-user mailing list
> grass-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-user

Angelos Tzotsos
Remote Sensing Laboratory
National Technical University of Athens

More information about the grass-user mailing list