# smileMetric

Compute spectral smile metrics of hyperspectral data

## Syntax

``[oxystd,carbonstd,oxyderiv,carbonderiv] = smileMetric(hcube)``

## Description

example

````[oxystd,carbonstd,oxyderiv,carbonderiv] = smileMetric(hcube)` computes the column mean derivatives, and their standard deviations, for the oxygen and carbon-dioxide absorption features of a hyperspectral data set. You can use these values to detect the spectral smile effect in the hyperspectral data set. For more information, see Smile Indicators. NoteThis function requires the Image Processing Toolbox™ Hyperspectral Imaging Library. You can install the Image Processing Toolbox Hyperspectral Imaging Library from Add-On Explorer. For more information about installing add-ons, see Get and Manage Add-Ons. ```

## Examples

collapse all

Load the hyperspectral data into the workspace.

`hcube = hypercube('EO1H0440342002212110PY_cropped.dat');`

Compute the column mean derivative values, and their standard deviations, for the oxygen and carbon-dioxide absorption features of the hyperspectral dataset `hcube`.

`[oxystd,carbonstd,oxyderiv,carbonderiv] = smileMetric(hcube);`

Perform spectral smile reduction using the maximum noise fraction (MNF) transform-based method.

`correctedData = reduceSmile(hcube,'Method','MNF');`

Compute the column mean derivative values, and their standard deviations, for the oxygen and carbon-dioxide absorption features of the smile-corrected hyperspectral dataset `correctedData`.

`[noxystd,ncarbonstd,noxyderiv,ncarbonderiv] = smileMetric(correctedData);`

Plot the column mean derivative values of the oxygen absorption feature for both the uncorrected hypercube `hcube` and the smile-corrected hypercube `correctedData`, and display their standard deviations.

```figure plot(oxyderiv,'LineWidth',2) hold on plot(noxyderiv,'LineWidth',2) hold off axis tight grid on xlabel('Cross-track positions (Columns)') ylabel('Derivatives for oxygen absorption features') legend({'Before smile correction','After smile correction'},'Location','northwest'); annotation(gcf,'textarrow',[0.4 0.4],[0.6 0.5],... 'String',['Standard deviation = ' num2str(oxystd)]); annotation(gcf,'textarrow',[0.7 0.7],[0.3 0.2],... 'String',['Standard deviation = ' num2str(noxystd)]);```

Plot the column mean derivative values of the carbon-dioxide absorption feature for both the uncorrected hypercube `hcube` and the smile-corrected hypercube `correctedData`, and display their standard deviations.

```figure plot(carbonderiv,'LineWidth',2) hold on plot(ncarbonderiv,'LineWidth',2) hold off axis tight grid on xlabel('Cross-track positions (Columns)') ylabel('Derivatives for carbon-dioxide absorption features') legend({'Before smile correction','After smile correction'},'Location','southwest'); annotation(gcf,'textarrow',[0.4 0.4],[0.7 0.85],... 'String',['Standard deviation = ' num2str(carbonstd)]); annotation(gcf,'textarrow',[0.7 0.7],[0.3 0.45],... 'String',['Standard deviation = ' num2str(ncarbonstd)]);```

## Input Arguments

collapse all

Input hyperspectral data, specified as a `hypercube` object. The `DataCube` property of the `hypercube` object stores the hyperspectral data cube. To calculate the column mean of oxygen and carbon-dioxide absorption feature derivatives, the `hypercube` object must have the full width half maximum (`FWHM`) values in the `Metadata` property.

Note

• To compute the column mean of oxygen absorption feature derivatives, the input hyperspectral data must contain data in the visible and near-infrared (VNIR) wavelength range 760 - 785 nm.

• To compute the column mean of carbon-dioxide absorption feature derivatives, the input hyperspectral data must contain data in the short-wave-infrared (SWIR) wavelength range 2010 - 2025 nm.

## Output Arguments

collapse all

Column mean derivatives for the oxygen absorption features, returned as a N-element row vector. N is the number of columns in the input hyperspectral data cube. If the input hyperspectral data cube is of type `double`, then the output vector is of data type `double`. Otherwise, the data type of the output vector is `single`.

Column mean derivatives for the carbon-dioxide absorption features, returned as a N-element row vector. N is the number of columns in the input hyperspectral data cube. If the input hyperspectral data cube is of type `double`, then the output vector is of data type `double`. Otherwise, the data type of the output vector is `single`.

Standard deviation of the column mean derivatives for oxygen absorption features, returned as a scalar. You can use this scalar to detect the presence of the spectral smile effect in hyperspectral data. If the value of `oxystd` is low, then the chances of the data having a smile effect is less in the VNIR range.

Standard deviation of the column mean derivatives for carbon-dioxide absorption features, returned as a scalar. You can use this scalar to detect the presence of the spectral smile effect in hyperspectral data. If the value of `carbonstd` is low, then the chances of the data having a smile effect is less in the SWIR range.

collapse all

### Smile Indicators

The smile effect occurs when hyperspectral data contains significant cross-track curvature with nonlinear disturbances along the spectral dimension. These nonlinear disturbances occur only in data captured using push-broom hyperspectral sensors, such as the Hyperion EO-1 and SEBASS. Based on [1], you can detect cross-track variation in the oxygen and carbon-dioxide absorption features, due to a possible smile effect, by calculating the first derivatives of the oxygen and carbon-dioxide band images. The first derivative of the adjacent bands ${B}^{\text{'}}$ is calculated using the absorption band image ${B}_{1}$ and the image of the subsequent band ${B}_{2}$, using the equation:

`${B}^{\text{'}}=\frac{{B}_{2}-{B}_{1}}{\overline{FWHM}},$`

where, $\overline{FWHM}$ is the average FWHM of the two bands ${B}_{1}$ and ${B}_{2}$. This derivative calculation is applicable to both the oxygen and carbon-dioxide absorption band images. The column mean values of the oxygen and carbon-dioxide derivatives can indicate cross-track nonlinearity caused by the spectral smile effect.

• The nonlinear, cross-track column mean of oxygen absorption feature derivative values indicates a spectral smile effect in the VNIR spectrum.

• The nonlinear, cross-track column mean of carbon-dioxide absorption feature derivative values indicates a spectral smile effect in the SWIR spectrum.

## References

[1] Dadon, Alon, Eyal Ben-Dor, and Arnon Karnieli. “Use of Derivative Calculations and Minimum Noise Fraction Transform for Detecting and Correcting the Spectral Curvature Effect (Smile) in Hyperion Images.” IEEE Transactions on Geoscience and Remote Sensing 48, no. 6 (June 2010): 2603–12. https://doi.org/10.1109/TGRS.2010.2040391.

## Version History

Introduced in R2021a
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 7, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0, "math_score": 0.7052119374275208, "perplexity": 3002.0275170828295}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "plain"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "warc_path": "s3://commoncrawl/crawl-data/CC-MAIN-2023-06/segments/1674764499804.60/warc/CC-MAIN-20230130070411-20230130100411-00344.warc.gz"}