I am classifying Landsat TM scenes for the entire Chesapeake Bay as part of my Master's research. Scenes have been collected from 1986 to 2016 in 5 year increments for my area of interest. I recently came across various papers that mentioned how to preprocess Landsat scenes for various analyses but none of them mentioned image classification (be it unsupervised or supervised). Is it necessary to preprocess these scenes before classifying them? As stated in my previous question (Separating spectral similar training sets to improve accuracy of classified Landsat scenes in ArcMap?), I have had issues with distinguishing beach and urban pixels in my supervised classifications. The mosaic of Landsat scenes I am working with is below: enter image description here

The color distortion in the right scenes concerns me. Will this negatively affect my classifications? How could I go about fixing this? Will preprocessing help with this at all?

If so, are there specific tools or preprocessing procedures I should be using for my scenes?


It really depends on the scene - that is, the set of image bands you are using for your area of interest. For starters, does your scene span multiple tiles, or is it contained inside one? If it spans multiple tiles you might want to engage in color balancing of some sort. You'll also want to check the cloud coverage for each tile, for each year. Also, I would ensure that all of your tiles were collected around the same date (such as a summer month, five years apart), and that the date is sensible - winter in the Chesapeake will show a lot of snow and ice blending with water in classification.

You'll also want to look at atmospheric distortion, and possibly other effects that might negatively impact a classification algorithm (striping is a sensor issue that occasionally affects Landsat, but not usually). You can check these effects by running a spectral correlation tool such as PCA (principal component analysis) on your band files, and examining the results. Spectral correlation should be high in quality data.

You can also simply view each year's imagery as a color composite - Natural Color and IR combinations will quickly show you whether the imagery is clear or not, or if there are obvious issues like atmospheric distortion. From there, a Stretch function run on each band for each year's data might significantly enhance the results of your classification. View histograms for each band and Stretch the bands to isolate the ranges of reflectance values present - this will magnify the spectral properties prior to classification.

The success of a classification will also depend highly on your training samples and input vector data, if you are using an Isocluster or Max Likelihood algorithm. Landsat imagery is quite coarse in resolution, and pixels often contain features across multiple classes. Final thought might be, examine the purpose of your classification. If you are trying to map urban, agricultural, water and beach, Landsat should be fine, but anything more specific than that and you might want to examine Hyperspectral options such as NASA's AVIRIS imagery.

Before and after running a stretch function - blue is natural color as it was downloaded, the second image has a stretch function run on each band, 4.2 standard deviations n from the statistical mean for values in that band.

enter image description here

enter image description here

| improve this answer | |
  • @tweakybiscuit23- Thank you for the insightful answer and all the help! To answer your question: I am working with 4 Landsat scenes all from the same year mosaicked together and all are from roughly the same date (give or take a month). When I mosaicked them together, two of the scenes look much different than the other two in natural color. What could be causing that? Will this be an issues later on in classifying? I just added a photo of the mosaic to the question for reference. – Paul M. Oct 26 '17 at 14:36
  • 1
    Yeah you'll want to run a stretch function on those, prior to mosaicking the tiles. There's so much variation, I would make sure too that you're using correct band combinations (you might be, it can be hard to tell with very different scenes/tiles). If you're using ArcMap, you can import bands from each dataset, run a stretch, then repeat for the other - if you're using anything else, I would stretch the bands by going 3-5 standard deviations from the statistical mean of histogram, per band, then mosaicking. I updated my answer with a before and after stretch of a random Landsat scene. – AlecZ Oct 26 '17 at 17:40
  • @tweakybiscuit23- Thanks for the images, that helped me visualize what you were talking about! I just have a few questions: did you also perform a gamma stretch? Do you think DRA (in the image analysis window) is worth using? – Paul M. Oct 26 '17 at 18:45
  • Again, depends on the software you're using. Arc makes it easier with the Mosaic Dataset - you can set the product properties to match Landsat type, and then perform stretches and other functions on individual sets within the mosaic. In this example, I applied the SD stretch and applied an "auto" gamma stretch (basically I didn't touch that). In other software, you might need to apply a stretch on each band (such as running each TIF file through the stretch function after identifying the mean and standard deviation statistics), and then mosaicking everything together. – AlecZ Oct 26 '17 at 18:46
  • 1
    I would hesitate to adjust the histograms directly - even slight changes might have extreme results. The annoying thing about the mosaic dataset is that when you add both scenes, statistics are calculated for the same band but both scenes, and any stretch will then be applied to both but based on the average values. I would create a separate mosaic dataset (or composite of bands) for just one of the two, perform a stretch and then you can add it to a stretched mosaic of the other. – AlecZ Oct 26 '17 at 22:10

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.