我只想知道哪个带有Java API的opencv可以区分高斯DoG?

最佳答案

顾名思义,DOG就是图像与2个卷积的差。

让我们开始吧:

//
// grayscale:
//
Mat gray = new Mat();
Imgproc.cvtColor(ocv,gray, Imgproc.COLOR_BGR2GRAY);

//
// make 2 kernels:
//
Mat k1 = Imgproc.getGaussianKernel(5, 0.6);
Mat k2 = Imgproc.getGaussianKernel(5, 4.2);

//
// apply them on your image:
//
Mat f1 = new Mat();
Imgproc.filter2D(gray, f1, CvType.CV_32F, k1);
Mat f2 = new Mat();
Imgproc.filter2D(gray, f2, CvType.CV_32F, k2);

//
// difference:
//

Mat dog = new Mat();
Core.subtract(f1,f2,dog);

[编辑:]

甚至在极少数情况下,您都可以通过应用过滤器的差异来交换具有不同拟合器的连续卷积,
G(img,fa)-G(img,fb) == G(img, fa-fb)

关于opencv - 如何使用Java API在OpenCV中执行DoG,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29776946/

10-16 09:44