[GRASS-user] supervised classification - feature extraction

I realize one can use use a training map to cluster like features, but is there a way to have a “leftover” class that throws everything else that doesnt match a defined class into this “leftover” category?

I’m using i.gensig to generate a signature file from a training map, and then i.maxlik to classify the raster. It works very well, but I am seeming to find that by defining 7 classes, it wants to put something in every class, even if not a best match. It is quite possible I am missing something critical, or not using the proper module. It looks like I should give i.smap a try too. Can a class be setup that would hold all the signatures not defined by the training map?

Also, in trying to extract houses, because of the wide variety of colors of roof shingles, it does not seem to work very well because of all the variance with in that class. I have lidar data for this area, and was thinking that for houses/buildings it might be a better approach to use lidar processing tools.

Basically I’m looking to classify impervious features within a given watershed. there was a good link here about this ( http://www.perrygeo.net/wordpress/?p=104 ), but the watershed I’m working with has huge areas of residential development.

Mark

On Fri, 2008-05-30 at 13:51 -0400, M S wrote:

Dear Mark,

some ideas below. Please correct me if I am "mis-classifying" :wink:

I realize one can use use a training map to cluster like features, but
is there a way to have a "leftover" class that throws everything else
that doesnt match a defined class into this "leftover" category?

I think in any case you have to pre-define you "leftover" class.
Otherwise how else can it be "produced" if it is not on your
classification scheme?

I'm using i.gensig to generate a signature file from a training map,
and then i.maxlik to classify the raster. It works very well, but I
am seeming to find that by defining 7 classes, it wants to put
something in every class, even if not a best match.

  It is quite possible I am missing something critical, or not using
the proper module. It looks like I should give i.smap a try too.

i.smap is very powerful. With the proper "sampling" it works great.

  Can a class be setup that would hold all the signatures not defined
by the training map?

Hmmm? AFAIK, any classification algorithm will use the full range of
values to split in to the number of classes that the user has selected.
So the question doesn't make sense to me.

Also, in trying to extract houses, because of the wide variety of
colors of roof shingles, it does not seem to work very well because of
all the variance with in that class. I have lidar data for this area,
and was thinking that for houses/buildings it might be a better
approach to use lidar processing tools.

Although I don't have much of experience with lidar data, I think should
go (with) for them! There are no more-precise remotely sensed data than
lidar (or are there any?). Playing around with the "z" values should be
the way to do it.

[...]

Nikos

Mark:

I realize one can use use a training map to cluster like features,
but is there a way to have a "leftover" class that throws everything
else that doesnt match a defined class into this "leftover" category?

ie you want an "outliers" class?

Hamish

That would be great. Let’s say for example that I only want to classify paved or dirt roads. So I setup two classes, one training area for dirt road, and one for paved road. Then a third outlier class of everything else that doesnt match the two inputted training classes.

It almost seems like using an unsupervised classification could achieve this, and then only extract the features of interest, being types of roads or impervious features.

I have lidar intensity data, but it is single band, and I am presuming that this 1 foot pixel multiband true color is better input for defining unique signatures.

Mark

On Fri, May 30, 2008 at 10:49 PM, Hamish <hamish_b@yahoo.com> wrote:

Mark:

I realize one can use use a training map to cluster like features,
but is there a way to have a “leftover” class that throws everything
else that doesnt match a defined class into this “leftover” category?

ie you want an “outliers” class?

Hamish

On Sat, May 31, 2008 at 6:23 AM, M S <mseibel@gmail.com> wrote:

That would be great. Let's say for example that I only want to classify
paved or dirt roads. So I setup two classes, one training area for dirt
road, and one for paved road. Then a third outlier class of everything else
that doesnt match the two inputted training classes.

It almost seems like using an unsupervised classification could achieve
this, and then only extract the features of interest, being types of roads
or impervious features.

I have lidar intensity data, but it is single band, and I am presuming that
this 1 foot pixel multiband true color is better input for defining unique
signatures.

I have used the i.smap classifier on BW imagery with good results. I
was after open and closed canopy, but included a third "shadow" class
for the small shadows cast by the taller trees to pick up the
"outlier" pixels. If you can delineate some of your "outlier" regions
in your training map, it may be possible to discriminate between your
real classes and the new outlier class.

good luck,

Dylan

Mark

On Fri, May 30, 2008 at 10:49 PM, Hamish <hamish_b@yahoo.com> wrote:

Mark:
> I realize one can use use a training map to cluster like features,
> but is there a way to have a "leftover" class that throws everything
> else that doesnt match a defined class into this "leftover" category?

ie you want an "outliers" class?

Hamish

_______________________________________________
grass-user mailing list
grass-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-user

On Sat, May 31, 2008 15:23, M S wrote:

That would be great. Let's say for example that I only want to classify
paved or dirt roads. So I setup two classes, one training area for dirt
road, and one for paved road. Then a third outlier class of everything
else
that doesnt match the two inputted training classes.

I guess something like this could be achieved if you could give the module
a maximum (variable-space) distance between your current class centroid
and the patch under study, so that if the distance is higher than that
threshold for any of the current class centroids, the area does not get
affected.

Shouldn't be to hard to code this, although you might need several passes
as the class centroids obviously move during classification.

Moritz