博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gabor
阅读量:4101 次
发布时间:2019-05-25

本文共 1838 字,大约阅读时间需要 6 分钟。

Gabor滤波器改

float W_line = 0.56;/使用自己写的Gabor滤波器时,脊线宽度所占整个周期(脊线加谷线)的比例float PI = 3.141592653589793;double modPI(double x)将角度x转成一个周期内的表达形式{
if (x >= 0 && x < (2*PI)) return x; int t = (int)(x /(2* PI)); return (x - t*2*PI);}double myGaborCos(double x){
double res; if (x < 0) x = -x; if (x - 6.3153 < 0.001 && x>6.3) x = x; double y = modPI(x);///y在0-2PI之间 if (y >= 0 && y < PI*W_line) {
res = cos(x / (2 * W_line)); } else if (y >= PI*W_line && y < (2 * PI - PI*W_line)) {
res = -cos((x - PI) / (2 - 2 * W_line)); } else if (y >= (2 * PI - PI*W_line) && y < 2 * PI) {
res = cos((x - 2 * PI) / (2 * W_line)); } return res; }//拷贝OpenCV源码的并且稍微改了下Mat MygetGaborKernel(Size ksize, double sigma, double theta, double lambd, double gamma, double psi, int ktype = CV_64F){
double sigma_x = sigma; double sigma_y = sigma / gamma; int nstds = 3; int xmin, xmax, ymin, ymax; double c = cos(theta), s = sin(theta); // 定卷积核的大小 if (ksize.width > 0) xmax = ksize.width / 2; else xmax = cvRound(std::max(fabs(nstds*sigma_x*c), fabs(nstds*sigma_y*s))); if (ksize.height > 0) ymax = ksize.height / 2; else ymax = cvRound(std::max(fabs(nstds*sigma_x*s), fabs(nstds*sigma_y*c))); xmin = -xmax; ymin = -ymax; CV_Assert(ktype == CV_32F || ktype == CV_64F); Mat kernel(ymax - ymin + 1, xmax - xmin + 1, ktype); double scale = 1; double ex = -0.5 / (sigma_x*sigma_x); double ey = -0.5 / (sigma_y*sigma_y); double cscale = CV_PI * 2 / lambd; for (int y = ymin; y <= ymax; y++) for (int x = xmin; x <= xmax; x++) {
double xr = x*c + y*s; double yr = -x*s + y*c; // Gabor滤波器的公式,将余弦值的计算换成实际需要的 double v = scale*std::exp(ex*xr*xr + ey*yr*yr)*myGaborCos(cscale*xr + psi); if (ktype == CV_32F) kernel.at
(ymax - y, xmax - x) = (float)v; else kernel.at
(ymax - y, xmax - x) = v; } return kernel;}

转载地址:http://iwksi.baihongyu.com/

你可能感兴趣的文章
OpenFeign学习(五):OpenFeign请求结果处理及重试控制
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
OpenFeign学习(七):Spring Cloud OpenFeign的使用
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(一):DOM生成XML
查看>>
XML生成(三):JDOM生成
查看>>
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>
collect2: ld returned 1 exit status
查看>>
C#入门
查看>>
查找最大值最小值
查看>>
杨辉三角
查看>>
冒泡排序法
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>
16、Memento 备忘录模式
查看>>
Java基础篇(一)
查看>>
数据库
查看>>
mysql update与group by
查看>>
nginx反代 499 502 bad gateway 和timeout
查看>>