[英]How to perform DoG in opencv with java API
我只想知道哪个带有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);
甚至在极少数情况下,您都可以通过应用过滤器的diff与不同的拟合器交换连续卷积 ,
G(img,fa)-G(img,fb) == G(img, fa-fb)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.