0

有人可以告诉我如何创建自己的高斯内核吗?在论文频率调谐显着区域检测(第 4.2 节)中,他们使用了 DoG 带通滤波器。我不知道如何在 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

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

4

1 回答 1

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

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

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

于 2012-07-11T13:10:07.633 回答