如何创建自己的高斯内核?

时间:2012-07-11 13:01:15

标签: opencv computer-vision javacv

有人可以告诉我如何创建自己的高斯内核吗? 在论文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

但我认为这是错误的内核。或者我做错了什么。 问候, 命运

1 个答案:

答案 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()"

我没有测试过,但应该可以使用。

您也可以手动应用基于内核的操作。这并不难。