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
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-user
--
Angelos Tzotsos
Remote Sensing Laboratory
National Technical University of Athens
http://users.ntua.gr/tzotsos
_______________________________________________
grass-user mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-user