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

Angelos Tzotsos gcpp.kalxas at gmail.com
Wed Oct 31 02:36:10 PDT 2012


Sorry, I forgot to CC Christos :)

On 10/31/2012 11:32 AM, Angelos Tzotsos wrote:
> 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?
>
> http://users.ntua.gr/chiossif/Free_As_Freedom_Software/isodata.c
>
> Cheers,
> Angelos
>
> 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
http://users.ntua.gr/tzotsos



More information about the grass-user mailing list