Hi,
I would like to know why keypoint detectors/feature descriptors are organized in this way. My first thought is that features2d.hpp are basic classes, xfeatures2d.hpp are extra classes and nonfree.hpp are classes that are not free for commercial use (SIFT,SURF).
But if this is the case, shouldn't DAISY (e.g.) be in nonfree.hpp since it's patented too? Is any special license issue the reason to move some classes to opencv_contrib (xfeatures2D), or just a matter of having them as an extra module? If so, why xfeatures is including nonfree algorithms?