我有一些小波与Gabor滤波器的代码,它是这样的..
但我不知道如何在我的图像上使用它?我知道有一些方法与MATLAB,即MATLAB方式.但我使用opencv
,我非常新的这个领域和matlab
,我不知道该怎么写从MATLAB代码OpenCV的代码,所以,啥子我应该有这样做opencv
?非常感谢!
********更新
我试过@ berak的方式,这是原始图像
这是在我所施加的滤波器 只是全白和一无所有,下面是我的参数,可以
int kernel_size = 31;
double sig = 1, th = 0, lm = 1.0, gm = 0.02, ps = 0;
cv::Mat kernel = cv::getGaborKernel(cv::Size(kernel_size, kernel_size), sig, th, lm, gm, ps);
cv::filter2D(src_f, dest, CV_32F, kernel);
Run Code Online (Sandbox Code Playgroud)
是有什么错我的设置?
ber*_*rak 11
基本上,您将您的IMG浮动,
然后构造一个内核:
cv::Mat kernel = cv::getGaborKernel(cv::Size(kernel_size,kernel_size), sig, th, lm, gm, ps);
Run Code Online (Sandbox Code Playgroud)
并将其应用于filter2D:
cv::filter2D(src_f, dest, CV_32F, kernel);
Run Code Online (Sandbox Code Playgroud)
[编辑]
**我不知道,但你可能会需要一个1路图像输入.
**imshow看到,你的形象是浮动,只是饱和任何超出1.0,所以你得到一个全白图像.
(这只是一个可视化的问题,需要一个比特变换的/缩放以固化它)
Mat in = imread("XfNal.jpg",0); // load grayscale
Mat dest;
Mat src_f;
in.convertTo(src_f,CV_32F);
int kernel_size = 31;
double sig = 1, th = 0, lm = 1.0, gm = 0.02, ps = 0;
cv::Mat kernel = cv::getGaborKernel(cv::Size(kernel_size,kernel_size), sig, th, lm, gm, ps);
cv::filter2D(src_f, dest, CV_32F, kernel);
cerr << dest(Rect(30,30,10,10)) << endl; // peek into the data
Mat viz;
dest.convertTo(viz,CV_8U,1.0/255.0); // move to proper[0..255] range to show it
imshow("k",kernel);
imshow("d",viz);
waitKey();
Run Code Online (Sandbox Code Playgroud)