[R-sig-Geo] clustering multi band images

Agustin Lobo Agustin.Lobo at ija.csic.es
Thu Jun 12 11:12:13 CEST 2008


(sorry I pressed the send button instead of the save as draft button,
I go on with my comments)

Laura,

Laura Poggio escribió:
> Thank you very much for your detailed answer that made me understand a 
> lot, and also it pointed out what I was thinking: R does not use the 
> spatial information for classification.

Hep! this is not a problem of R, don't blame it for that. R is wonderful
for multi-variate classification. This is a problem of the whole
approach of applying multi-variate classification to multi-spectral
imagery. And this does not mean that the approach is wrong or useless,
it's just a warning, a fact that the analyst must keep in mind.

> The image (for the moment) is rather small, as it is a sample of 512x512 
> pixels.

As you have 3 bands the total dimensionality is 512x512x3, which might 
be ok, it depends on the ram you have. 512x512 is rather small for
imagery these days... (unless you had hyperspectral images!).

You should take advantage of the relatively small size of your image to
compare to results using an increasing nb. of sampled pixels. If you
use model-based clustering, I would say that results using 10000 pixels
(covering the whole radiometric space, this is an important caution)
would yield the same results than using all the 512x512 pixels.

 > I have to compare the effect of a segmentation method over raw
 > data for various unsupervised techniques.

Segmentation is not only meant for reducing the memory problems, this
is just a fortunate side effect. Segmentation has many other advantages 
(and some disadvantages).

> My idea was to do the classification in R, because it handles many more 
> methods then GIS/RS software I have available.

And I agree with you. By using R you get free of all the many 
constraints of classification methods that are implemented in RS 
packages, and you can
experiment with many more different methods. And you do know what yo do.
I was mentioning the use of RS/GIS for sampling and assigning if you had 
large images (yours are exceptionally small nowadays).

Good luck!

Agus


> I will investigate some of the points raised and in case I will come 
> back with more clear ideas and questions.
> 
> Thank you very much to everybody for the support.
> 
> Laura
> 
> 
> 
> 2008/6/12 Agustin Lobo <Agustin.Lobo at ija.csic.es 
> <mailto:Agustin.Lobo at ija.csic.es>>:
> 
>     If your images are large (and images typically are large because
>     pixel size
>     has to be small compared to the extent of the image for the image to
>     be of acceptable quality for our vision system), I do not advice you
>     to get them into R for processing as R has severe memory limits
>     and many classification techniques are not precisely memory-efficient
>     (but see clara() in package cluster, actually read
>     http://cran.r-project.org/web/views/Cluster.html).
> 
>     I think that you should sample your image in a RS/GIS environment
>     making sure you cover all
>     the radiometric space and import only a table pixels x bands into R,
>     the actual nb. of pixels depending on your HW/SW configuration (but
>     10000 would be a good start). Then use the numerous R classification
>     tools to define the centroids and once you have them use again your
>     RS/GIS program to actually assign each pixel in the image to a
>     centroid according to a given rule (i.e. maximum likelihood). There
>     might be
>     ways of writing an efficient assignation step within R itself also,
>     I think that mclust package does it.
> 
>     Another way of reducing the number of individuals to classify is
>     performing a segmentation of the image first and then classify segments
>     instead of pixels (i.e.
>     # Lobo, A. 1997.  Image segmentation and discriminant analysis for
>     the identification of land cover units in Ecology. IEEE Transactions
>     on Geoscience and Remote Sensing, 35(5): 1- 11.
>     http://wija.ija.csic.es/gt/obster/ABSTRACTS/alobo_ieee97.pdf
>     perhaps other articles in
>     http://wija.ija.csic.es/gt/obster/alobo_publis.html
>     might be of help)
> 
>     In any case, note that img in your code should be converted into
>     a multivariate table pixels x bands for most classification
>     functions in R to work. Note that this fact makes obvious
>     that classification approaches to image processing do not make
>     use of the spatial information of the image, which is actually
>     a fundamental part of the information of any image.
> 
>     Agus
> 
>     Laura Poggio escribió:
> 
>         Dear list,
>         I am trying to do some clustering on images. And I have two main
>         problems:
> 
>         1) Clustering multiband images.
>         I managed to be successful with a single band image, but when
>         trying to
>         apply to a 3 band I get the following warning message:
>         In as.matrix.SpatialGridDataFrame(x) :
>          as.matrix.SpatialPixelsDataFrame uses first column;
>          pass subset or [] for other columns
> 
> 
>         2) saving clustering results as grid or image.
>         I get a vector of clusters, but without both coordinates. How it
>         is possible
>         to transform it in a grid?
> 
>         Here the code I use to read the image itself and to do the
>         clustering:
> 
>         library(rgdal)
>         fld <- system.file("E:/data/IMG/fr/", package="rgdal")
>         img <- readGDAL("123_rawR.tif")
> 
>         kl <- kmeans(img, 5)
> 
>         I am quite new to image processing, especially within R, and any
>         help is
>         greatly appreciated.
> 
>         Thank you in advance
> 
>         LP
> 
>                [[alternative HTML version deleted]]
> 
>         _______________________________________________
>         R-sig-Geo mailing list
>         R-sig-Geo at stat.math.ethz.ch <mailto:R-sig-Geo at stat.math.ethz.ch>
>         https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> 
> 
>     -- 
>     Dr. Agustin Lobo
>     Institut de Ciencies de la Terra "Jaume Almera" (CSIC)
>     LLuis Sole Sabaris s/n
>     08028 Barcelona
>     Spain
>     Tel. 34 934095410
>     Fax. 34 934110012
>     email: Agustin.Lobo at ija.csic.es <mailto:Agustin.Lobo at ija.csic.es>
>     http://www.ija.csic.es/gt/obster
> 
> 

-- 
Dr. Agustin Lobo
Institut de Ciencies de la Terra "Jaume Almera" (CSIC)
LLuis Sole Sabaris s/n
08028 Barcelona
Spain
Tel. 34 934095410
Fax. 34 934110012
email: Agustin.Lobo at ija.csic.es
http://www.ija.csic.es/gt/obster




More information about the R-sig-Geo mailing list