[](https://doi.org/10.5281/zenodo.3700183)
* Fixed a few missing pages and broken links within the documentation.
* Add `plantcv.hyperspectral.analyze_index`
* This function now accepts min/maximum bin labels, or can auto-calculate bins based on image data range.
* Collects frequency data for all integrated indices (mean, median, std, frequency).
* Optionally plots a histogram of frequency values.
* Add links to source code throughout documentation pages. This allows users to more easily find the raw, source code for those interested in learning more of the mechanics of a function than the documentation page provides.
* Adds a `border_width` parameter to `plantcv.within_frame`.
* Allows the user to specify how many pixels from the image edge they want to consider for detecting out-of-frame objects.
* The default is 1 px, which maintains the previous default behavior.
* Made some updates to the documentation based on usage on Windows.
* Update dependencies in `requirements.txt`
* Add `plantcv.roi.roi2mask` which allows user to create a binary mask from any contour.
* Added `plantcv.plantcv.visualize.colorspaces` which
* Used to quickly view all potential colorspaces, that are often used for thresholding/object segmentation steps.
* Plots out an image will all potential colorspaces, labeled with which colorspace each is, next to the original image.
* Add indices to the `plantcv.hyperspectral.extract_index` function
* Add PRI (Photochemical reflectance index)
* Add ARI (anthocyanin reflectance index)
* Add ACI (anthocyanin content index)
* Add and update `plantcv.hyperspectral.analyze_spectral` function
* Was storing out information, mainly about the global statistics like the maximum reflectance value for the entire datacube.
* Average reflectance per band was the only per-band measurement that we had been doing but really most of the stats could be per-band rather than global.
* Modify various .npz test data files in code tests (avoid using Numpy object arrays and the pickle module)
* In plantcv.transform.create_color_card_mask() the exclude input option required users to input excluded color chip IDs in descending numerical order.
* Adds `plantcv.threshold.saturation` function for masking saturated pixels.
* Any channel at or above a certain threshold
* All channels at or above a certain threshold.
* The user can also pick this threshold (default = 255).