terraref / extractors-hyperspectral

Scripts and code relevant to the SWIR and VNIR cameras.
BSD 3-Clause "New" or "Revised" License
6 stars 6 forks source link

Create image quality index extactor #45

Closed Paheding closed 6 years ago

Paheding commented 6 years ago

This is the first version of hyperspectral image quality index. This model will measure sharpness or other artifacts related to the blur.

dlebauer commented 6 years ago

This is great! Maybe tomorrow we can discuss how to incorporate this into the extractor.

Could you update the README with a description of what this code does - specifically, what its (intputs and) outputs are? Could the quality metrics be inserted into both the file header and the Clowder metadata? Could it generate a figure for folks to review, and an error if some quality threshold is not met?

dlebauer commented 6 years ago

Will this work generally for all of our imaging sensors? Are there other image quality metrics that we should add as part of a more comprehensive / generic qa/qc pipeline?

Paheding commented 6 years ago

@dlebauer This is one of the most important metrics and I have fully tested it on a variety of images. There will be other image quality metrics that are currently underdeveloping. I will update this extractor once the other metrics are ready.

And it can work for many imaging sensors with some modifications.

dlebauer commented 6 years ago

The decision was to create a new library or repository for quality control and metrics. Maybe named "quality-metrics" not sure

But from the discussion today w/ @Paheding and others it sounds like this metric could be generalized to assess the blurriness of any raster or matrix and thus be used on a variety of Level 1 and Level 2 products (mostly netcdf and geotiff files).

There are many such metrics, some describing image quality (like blurriness) and others describing phenotypes such as texture, and I suspect infinite mathematical descriptions of an array. So we should consider how to group these functions into packages, and at what level to generalize. We also need to determine a schema for recording quality (that should follow a standard vocabulary and schema if it exists).

One thing that should vary by data type is the allowable ranges - e.g., when to throw an error or note or have someone inspect the data or prevent downstream processing. We could set valid ranges for each measurement in the betydb variables table (min and max) fields and we can store priors as parametric distributions in the priors table, which can be categorized by genotype or species.

@pless and @rmgarnett your thoughts?

dlebauer commented 6 years ago

next steps:

max-zilla commented 6 years ago

This was moved here: https://github.com/terraref/quality-metrics/pull/1

Closing this PR.