2012-07-11 69 views
0

有人能告诉我如何创建我自己的高斯内核? 在论文Frequency-tuned Salient Region Detection (Section 4.2)中,他们使用DoG带通滤波器。我不知道如何在OpenCV/JavaCV中实现它。 DoG的内核被称为:1/16 [1; 4; 6; 4; 1]。有人可以解释如何设置这些内核?如何创建我自己的高斯内核?

//编辑: 的时候,我已经建立了我的狗与筛选:

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

内核只是CV ::垫

http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=gauss#getgaussiankernel

由于文档说,你应该创建要垫内核:

"generated kernels can be passed to sepFilter2D() or to createSeparableLinearFilter()" 

我没有测试它但应该工作。

您也可以根据手的内核应用操作。这并不难。

+0

谢谢,用手?我怎样才能做到这一点? – 2012-07-11 13:28:52

+1

谷歌执行高斯滤波器的一些参考http://rastergrid.com/blog/2010/09/efficient-gaussian-blur-with-linear-sampling/ http://www.librow.com/articles/article-9 http://lodev.org/cgtutor/filtering.html我只是滚动这个网站。你可以propably找到更好的参考。 – krzych 2012-07-11 13:45:37