I am running a Master's project researching Greater prairie-chicken nest and brood survival. Some of my intended covariates include local vegetation measures using digital imagery. I would like to use remote sensing/GIS software to estimate % cover of vegetation classes (i.e. forbs, grasses, dead vegetation).

I need something that can do object-based classification; however, I attend a small university and we do not have an eCognition license, nor can we afford one. I'm in the process of seeing if UW-Madison is using it. If that is the case, I may be able to piggy-back through the UW-system. If not, is there a free trial that I could do this with? Are there any open source software packages or GIS extensions that can be used for these analyses with acceptable accuracy?

Additional Info: I have digital photos (20 mega pixel resolution) of 1 sq. m. daubenmeire frames at nest sites.

  • How comfortable are you with writing code to perform the classification? – om_henners Mar 29 '15 at 22:05
  • I would be willing to try. But, I have only started getting familiar with Python. What do you suggest? – Matt Mar 29 '15 at 22:37

I have attended training in use of the Semi-Automatic Classification Plugin for QGIS. From what I could see it could be what you are looking for. The whole rig is available for free, so money should not be an issue.

Admittedly I am no expert in these tools, but the author says it includes several classification algorithms (Minimum Distance, Maximum Likelihood, Spectral Angle Mapping).

In our training we were able to train SCP and then have the system automatically produce vector layers which classified forests and open land more than well. We used modis land data.

  • 1
    I do not believe that there is a segmentation module in this QGIS plugin. – Jeffrey Evans Mar 29 '15 at 18:53
  • Author seems to believe so: "We need to create several ROI, considering the spectral variability of land cover classes. It is important that ROIs represent homogeneous areas of the image, therefore we are going to draw the ROIs using a region growing process (i.e. a segmentation of the image, grouping similar pixels)." (fromgistors.blogspot.com/2014/01/…) – ragnvald Mar 29 '15 at 19:03
  • 2
    An ROI is a region of interest which represents homogeneous training areas. Region growing is a common way to generate ROI's and is not an image segmentation! – Jeffrey Evans Mar 30 '15 at 17:19
  • In any case I believe my answer to be relevant for the question in particular considering where he says: "Are there any open source software packages or GIS extensions that can be used for these analyses with acceptable accuracy?". I am all for good and relevant answers and if my answer is not up to standards you know what to do :-) – ragnvald Mar 30 '15 at 18:23

Yes, there are free object-oriented (segmentation) software available. A few that come to mind are Spring, ITK, Orfeo toolbox and GRASS GIS.

I would however point out that image segmentation is a poor direction to peruse when trying to model fractional cover. A segmentation algorithm is designed to minimize within unit variance and maximize between unit variance. This effectively smooths your data, which is quite undesirable when attempting to model a continuous process such as fractional cover. A regression approach would be much better suited or alternately, a binary classification of each target class where a per-unit fractional cover could be derived.

  • I believe the binary classification of target classes is what I want. The per-unit fractional cover is what I am interested in. I have photos of 1 sq. meter vegetation plots. I want just need the per-unit cover of 2-3 different veg. classes identified by shape and/or color differences. Similar to Luscier et al. (2003)? – Matt Mar 29 '15 at 22:36

Give you've got some experience in coding in Python I'd also recommend looking at the scikit-learn which has a large number of methods available for supervised, unsupervised, and semi-supervised classification, as well as regression.

If as @Jeffrey-Evans says you're looking to perform binary classification you could look at Support Vector Classification, or if you're looking at regression you could look at the corresponding regression (SVR) methods.

  • 1
    If using Support Vectors I would highly recommend using Kernel functions to account for nonlinear problems. In the binary case a clear margin may be derived using linear functions but this is quite doubtful in a multi-feature or regression problem. The convexity problem in nonlinear multivariate space can be addressed using Kernels, which are available in the SVR and SVC functions in scikit-learn. There are also flexible Kernel implementations of support vectors in the ks R package. – Jeffrey Evans Mar 31 '15 at 0:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.