首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV中的Gabor核参数

OpenCV中的Gabor核参数
EN

Stack Overflow用户
提问于 2014-11-15 16:40:51
回答 1查看 3.2K关注 0票数 3

我必须在我的应用程序中使用Gabor过滤器,但是我对这个OpenCV方法参数值一无所知。我想对虹膜进行编码。启动Gabor过滤器并获得特性(我想对12组Gabor参数值这样做)。然后我想数一数汉明染料和做认证。

如果有人可以在这里写出参数范围,或者如何在函数中计算它:

代码语言:javascript
复制
Imgproc.getGaborKernel(new Size(kSize[j], kSize[j]), sigma, theta, lambda, gamma);

我会非常感激的。当然,我自己也试过分配,但没有成功。

示例文件:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-17 13:57:25

您可以参考这个c++代码来为您的图像查找Gabor边缘检测器输出,我相信您也可以在java中形成类似的结果!使用这些值查找所需的内核类型。

代码语言:javascript
复制
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <math.h>

using namespace cv;
int pos_kernel_size=21;
int pos_sigma= 5;
int pos_lm = 50;
int pos_th = 0;
int pos_gamma= 0;
int pos_psi = 90;

Mat src_f;
Mat dest;

void Process(int , void *)
{
    int kernel_size=(pos_kernel_size-1)/2;

    Size KernalSize(kernel_size,kernel_size);
    double Sigma = pos_sigma;
    double Lambda = 0.5+pos_lm/100.0;
    double Theta = pos_th*CV_PI/180;
    double psi = pos_psi*CV_PI/180;;
    double Gamma = pos_gamma;

    Mat kernel = getGaborKernel(KernalSize, Sigma, Theta, Lambda,Gamma,psi);
    filter2D(src_f, dest, CV_32F, kernel);
    imshow("Process window", dest);
    Mat Lkernel(kernel_size*20, kernel_size*20, CV_32F);
    resize(kernel, Lkernel, Lkernel.size());
    Lkernel /= 2.;
    Lkernel += 0.5;
    imshow("Kernel", Lkernel);
    Mat mag;
    pow(dest, 2.0, mag);
    imshow("Mag", mag);
}

int main(int argc, char** argv)
{
    Mat image = imread("Gabor.bmp",0);
    cv::imshow("Src", image);

    image.convertTo(src_f, CV_32F, 1.0/255, 0);

    if (!pos_kernel_size%2)
    {
        pos_kernel_size+=1;
    }
    cv::namedWindow("Process window", 1);
    cv::createTrackbar("Sigma", "Process window", &pos_sigma, pos_kernel_size, Process);
    cv::createTrackbar("Lambda", "Process window", &pos_lm, 100, Process);
    cv::createTrackbar("Theta", "Process window", &pos_th, 180, Process);
    cv::createTrackbar("Psi", "Process window", &pos_psi, 360, Process);
    cv::createTrackbar("Gamma", "Process window", &pos_gamma, 100, Process);
    Process(0,0);
    waitKey(0);
    return 0;
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26948110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档