有人可以告诉我如何创建自己的高斯内核吗? 在论文Frequency-tuned Salient Region Detection (Section 4.2)中,他们使用了DoG-Bandpass过滤器。我不知道如何在OpenCV / JavaCV中实现它。 DoG的内核称为:1/16 [1; 4; 6; 4; 1]。有人可以解释如何设置这些内核吗?
//编辑: 及时,我已经设置了我的DoG过滤器:
double sigma_small = Math.PI/2.75;
double sigma_large = DOUBLE.POSITIVE_INFINITY;
IplImage gaussL= cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);
IplImage gaussS= cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);
cvSmooth(input, gaussL, CV_GAUSSIAN, kernel_size,kernel_size, sigma_small, sigma_small);
cvSmooth(input, gaussS,CV_GAUSSIAN, kernel_size,kernel_size, sigma_large, sigma_large); //eq. to 0
但我认为这是错误的内核。或者我做错了什么。 问候, 命运
答案 0 :(得分:4)
内核只是cv :: Mat
http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=gauss#getgaussiankernel
正如文档所说,你应该创建你想要的Mat内核,并且:
"generated kernels can be passed to sepFilter2D() or to createSeparableLinearFilter()"
我没有测试过,但应该可以使用。
您也可以手动应用基于内核的操作。这并不难。