Как создать собственное ядро ​​Гаусса?

может кто-нибудь сказать мне, как я могу создать свое собственное гаусс-ядро? В документе Обнаружение значимой области с настройкой частоты (раздел 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

Но я думал, что это неправильное ядро. Или я сделал что-то не так. привет, судьба


person 501 - not implemented    schedule 11.07.2012    source источник


Ответы (1)


Ядро - это просто 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()"

Я не проверял это, но должно работать.

Вы также можете применить операцию на основе ядра вручную. Это не сложно.

person krzych    schedule 11.07.2012
comment
google для некоторых ссылок на реализацию фильтра Гаусса rastergrid.com /blog/2010/09/ librow.com/articles/article-9 lodev.org/cgtutor/filtering.html Я только что просмотрел эти сайты. Вероятно, вы можете найти лучшие ссылки. - person krzych; 11.07.2012