Here is a link to the paper.
I primarily did this project to implement an image processing algorithm from scratch. OpenCV does not have the implementation of Edge-Preserving filter for more than three channels when I did this project.
Independent Components Analysis(ICA) is first performed across the channels to separate out the information present in the image. Gaussian Filter is applied, this process is referred to as small structure removal in the algorithm. Then edge recovery is performed via rolling guidance filter. This is the bottleneck step of the process, since the RGF is a variable convolutional process(i.e. the filter values are not constant and change according to the pixel window values of the image where it is operating currently).
All of this is not done across all the channels, rather subsets are taken and then recombined before the final classification step. In the paper, they explore two kinds of classifiers. I used the Random Forest classifier from sklearn
. The accuracy of my implementation was averaging around 80%.
Even with the higher values of accuracy as seen in the paper, more recent DNNs such as MRA-NET can achieve above 99% accuracy.
Project link: https://github.com/ArifAhmed1995/hyperspectral-classify