I am classifying Landsat TM scenes of the entire Chesapeake Bay as part of my Master's research in ArcMap 10.3. For these scenes, I am classifying the following land cover types: water, forest, agricultural, wetland, beach, and urban. Training sets have been drawn throughout the scene with water having the highest count of pixels (2731803). Beach has the least number of pixels (2944) but is my most important cover type and there is no more available beach to delineate training sets on.

As one would expect, my urban and beach classification categories are extremely spectrally similar and make classifying these land cover types particularly difficult. Looking at the scatterplot comparing both categories, the two classes overlap heavily. An example can be seen below; red is beach and purple is urban:

enter image description here

Typically, categories that overlap in the scatterplot are merged to create a single training set but that is simply not possible to do for my research. I have tried adding more training sets for both cover types, merged and deleted repetitive training sets, and tested different parameters within the Maximum Likelihood classification scheme all to no avail.

An example of a misclassified island can be seen below. These occur throughout my entire scene. The red pixels in the image are misclassified beach pixels.

enter image description here

How best can I go about separating all of my land cover classes and reducing the frequency of misclassified pixels in my scenes?

I have been unable to find papers and posts regarding this issues.

  • 2
    Perhaps add another band = distance from coastline or even use elevation model. – FelixIP Oct 12 '17 at 20:06
  • @FelixIP- How would I be able to use that added band in regards to the training sets? Could you explain a bit more what you mean by this? Thanks again! – Paul M. Oct 12 '17 at 20:08
  • Compute your distance raster and add it to the list of rasters, so you'll have 1 multiband raster landsat and single band distance and/or elevation. Or perhaps reclassify original Results based on a distance statistics. – FelixIP Oct 12 '17 at 21:14
  • What band are you using for identifying the beach and urban areas? 6 is thermal? But I suppose their relatively similar makeup gives them a similar spectral response. Can you play around with classifying using multiple bands? – Pete Oct 12 '17 at 21:24
  • @Pete- I tried classifying the image off of individual bands and the only band that was remotely correct was band 4. Do you have any suggestions for band combinations that may help? – Paul M. Oct 13 '17 at 14:44

Some time ago I had troubles with classification and solved them by firstly doing Principal Component Analysis (PCA) on the image bands, and then classifying the principal components instead of the original bands.

PCA will convert your correlated bands into uncorrelated variables called principal components in a way that the first component has the largest possible variance (most of the variability in the data), and the next component has the highest variance being orthogonal to the first component, and so on. The resulting vectors are uncorrelated.

Using orthogonal principal components as equal variables for classification, you will increase the weight of that small part of information which is uncorrelated in the beach and urban areas (last components), because the first components should take everything that makes beach and urban similar. I used unsupervised classification but you can create training sets over the principal components.

PCA exists in ArcGIS so you can try this method.

In details (and if you will need citations) it is described in my master thesis, page 61.

  • Hi Nadya- Thank you so much for the great advice! I have been doing many different trials of PCA but I am still have some issues. First, I ran PCA in ArcMap and I found that 98% of variance is explained in the first three components (bands 1-3). Second, in the Iso Cluster Unsupervised Classification tool in ArcMap I tried using the PCA performed on all 7 bands and then on individual components (1-3) and varied the number of classes and all came back somewhat inaccurate. I finally tried using training sets on the PCA and it did not work. Do you have any advice for how to fix this? Thanks! – Paul M. Oct 18 '17 at 15:56
  • @Paul M. first three components are not bands 1-3 anymore. Include all the bands. 98% is ok, you are not much interested in the first component(s). You need to visualize the components individually as greyscale 1-band images and see if in any component you see a clear difference between beach and urban, probably in the last ones. Then you nailed it, and make sure to include those components in your classification. If the bright difference between beach and urban will not appear in any component, it is a bad luck and will not work. – nadya Oct 18 '17 at 16:31
  • Hi Nadya, I figured out that components 1, 2, 3, 5, and 6 are probably best for doing the classification. By "including all the bands" in your previous comment, do you mean performing an unsupervised classification on the scene based on all 7 bands and the aforementioned components? How would I go about using my training sets on the PCA components for a maximum likelihood classification? – Paul M. Oct 18 '17 at 17:43
  • @Paul M. include all the bands into PCA, then do your classification on the components as you used to do on the bands. Join your good components into a "multiband image" if necessary. You can try different combinations of components, maybe collect new training sets – nadya Oct 18 '17 at 18:21
  • Nadya- I have tried to classify the scene based on all the PCA components and I also tried to classify based on several combinations of components. Every single time the classified scene is almost entirely in a single color since the training sets were drawn on a color image and the classification of the PCA is taking place on a grayscale image. I tried to create a multiband image and that did not work either. Do you have any more suggestions or is this method just simply not feasible? – Paul M. Oct 18 '17 at 19:07

Try using image segmentation and classification. This approach often produces more accurate results than pixel based classification. There are many image segmentation algorithms, although the general concept is to cluster statistically similar pixels. These clusters are then classified using algorithms such as maximum likelihood, random forests, or many others.

eCognition Developer is the crown jewel of image segmentation and classification programs. Otherwise, there are many good approaches using Python. ArcGIS has a good image segmentation algorithm that would be worth a try, particularly since their approach can handle multiband imagery.

Some other ideas to increase the classification accuracy:

  • Incorporate indices such as NDVI, SR, EVI, etc into your classification.
  • Incorporate texture metrics. The idea here is that urban areas will have a different texture than beach classes
  • Use different data such as Sentinel-1, Sentinel-2, or World View-2 or 3 (you may have free or cheap access to WV imagery through your University)
  • Hi Aaron- thank you for the helpful response! I have downloaded a free trial of eCognition Developer and will be trying that out today. I tried to use the Segment Mean Shift tool in Arc on my composite image (of all seven bands with a true color image being displayed) but it kept crashing no matter what settings I used. Any idea why this may be happening? Do you have suggestions for other tools in Arc I could try? Any suggestions for Python specific tools I should try out as well? Thank you again! – Paul M. Oct 24 '17 at 16:09

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.