如何在OpenCV中获取gabor内核矩阵的实部和虚部

时间:2015-11-18 13:35:49

标签: opencv image-processing iris-recognition

OpenCV初学者和糟糕的数学。 我的工作是将Gabor滤镜应用于标准化图像。我只知道OpenCV有一个getGaborKernel函数,我想知道这个函数的返回矩阵是内核的实部或虚部。 如果我不能使用这个函数,那么我该如何生成那些内核? 使用Java API,但C ++代码很好。

2 个答案:

答案 0 :(得分:1)

你可以在{87}的第87行看到它正在计算真实部分(根据gabor.cpp)。

double v = scale*std::exp(ex*xr*xr + ey*yr*yr)*cos(cscale*xr + psi);

您可以将此行修改为虚构部分(也报告为wikipedia

double v = scale*std::exp(ex*xr*xr + ey*yr*yr)*sin(cscale*xr + psi);
                                               ^^^

拥有内核后,可以将其与函数here

一起使用

答案 1 :(得分:1)

实际上,cos和sin之间的差异是偏移90度或PI / 2。 因此,您可以通过将PSI设为0表示实际和PI / 2表示虚拟来获得实数和虚数Gabor内核。

  

Mat kernelReal = getGaborKernel(ksize,sigma,theta,lambda,gamma,0,0,CV_32F);   Mat kernelImag = getGaborKernel(ksize,sigma,theta,lambda,gamma,0,PI / 2,CV_32F);