NivaarExam PrepOfficial exam papers ↗

18-Geom-A5 Remote Sensing and Image Analysis · May 2014

Question 3 of 5: Contrast Enhancement of ETM+ Band 4

Nivaar worked solution (AI-drafted; not reviewed by a licensed engineer)

Notes on this paper

National Exams — May 2014 — 04-Geom-A5 Remote Sensing and Image Analysis. Closed-book; one approved Casio or Sharp calculator permitted. Format: five questions of equal value (20 marks each); most require essay-format answers, and all five are solved in full below. Radiometric and image-processing conventions follow standard North-American digital-image-processing practice (8-bit Landsat/ETM+ imagery).

Reference texts: J. R. Jensen, Introductory Digital Image Processing: A Remote Sensing Perspective (4th ed., Pearson, 2016); Lillesand, Kiefer & Chipman, Remote Sensing and Image Interpretation (7th ed., Wiley, 2015); J. A. Richards, Remote Sensing Digital Image Analysis (5th ed., Springer, 2013); J. R. Schott, Remote Sensing: The Image Chain Approach (2nd ed., Oxford, 2007).

Question 3: Contrast Enhancement of ETM+ Band 4 (20 marks)

Question text not reproduced: the examination questions are © Engineers and Geoscientists BC. Open the official past paper (linked at the top of this page) to read the question, then follow the worked solution below.

3.1 Simple linear contrast stretch (calculation)

Given. An 8-bit near-infrared band whose observed brightness values (BV) span only $\text{BV}_{\min}=30$ to $\text{BV}_{\max}=160$; the display range of 8 bits is $0$ to $2^8-1 = 255$.

Find. The linear mapping $\text{BV}_{\text{out}} = f(\text{BV}_{\text{in}})$ that stretches $[30,160]$ onto the full $[0,255]$ display range.

Approach. A simple linear stretch is the straight line that sends the input minimum to output 0 and the input maximum to output 255; its slope is the ratio of the two ranges.

  1. Form the linear map. Subtract the input minimum, normalize by the input span, and scale to the output span. With $\text{BV}_{\min}=30$, $\text{BV}_{\max}=160$ and output maximum $255$: $$\text{BV}_{\text{out}} = \left(\frac{\text{BV}_{\text{in}}-\text{BV}_{\min}}{\text{BV}_{\max}-\text{BV}_{\min}}\right)\times 255 = \boxed{\frac{\text{BV}_{\text{in}}-30}{160-30}\times 255}$$
  2. Evaluate the slope. The gain applied to every pixel is $$\text{slope} = \frac{255}{160-30} = \frac{255}{130} = 1.9615,$$ so equivalently $\text{BV}_{\text{out}} = 1.9615\,(\text{BV}_{\text{in}}-30)$, rounded to the nearest integer.
  3. Check the end-points and clip. Substituting the extremes confirms the mapping fills the display range: $\text{BV}_{\text{in}}=30\Rightarrow 0$, the midpoint $\text{BV}_{\text{in}}=95\Rightarrow 127.5$, and $\text{BV}_{\text{in}}=160\Rightarrow 255$. Any input below 30 is clipped (set) to 0 and any input above 160 is clipped to 255, so the output stays within $[0,255]$.
QuantityValue
Stretch equation$\text{BV}_{\text{out}} = \dfrac{\text{BV}_{\text{in}}-30}{130}\times 255$
Slope (gain)$255/130 = 1.9615$
Maps $30\to$$0$
Maps $95\to$$127.5\;(\approx128)$
Maps $160\to$$255$

3.2 Enhancing contrast within the healthy-vegetation region

In near-infrared band 4, healthy vegetation is strongly reflective, so its pixels form a dense cluster at the bright end of the histogram, occupying only a small part of the $[30,160]$ range. A simple linear stretch spreads the 256 output levels uniformly across the whole input range, so it devotes only a few output levels to that narrow vegetation cluster — internal contrast within vegetation stays poor. To enhance contrast within vegetation specifically, the display levels must be concentrated on the vegetation sub-range at the expense of the rest of the scene.

The appropriate choice is therefore a non-linear, density-adaptive stretch: a piecewise-linear stretch that assigns most (or all) of the $0$–$255$ output range to just the vegetation brightness interval, or a histogram-equalization stretch. The piecewise-linear stretch targets the vegetation interval by design, whatever the rest of the scene contains. Histogram equalization allocates output levels in proportion to how frequently each input level occurs, so in a summer scene where vegetation is the most populated brightness range it automatically receives the largest share of the dynamic range, maximizing the contrast within that class while compressing the sparsely-populated remainder (if vegetation covered only a minor part of the scene, the targeted piecewise stretch would be the better of the two). A simple linear or min–max stretch, by contrast, cannot do this because it treats every part of the range equally regardless of pixel density.