zernike矩具有旋转不变性,广泛用于目标识别模板匹配,抗噪能力强。

zernike矩的原理就不过多赘述,上代码。

   //求n的阶乘long TemplateMatch::factorial(int n){int result=1;while(n>1){result *= n;n-=1;}return result;}//zernike矩径向多项式double TemplateMatch::RadialPolynomial(double p, int n, int m){double radial=0;int s;double c;for (s=0; s<=(n-m)/2; s++){c=pow((double)(-1),(double)(s))*factorial(n-s)/((double)(factorial(s)*factorial((n+m)/2-s)*factorial((n-m)/2-s)));radial=radial+c*pow(p,n-2*s);}return radial;}//n阶m次zernike矩double TemplateMatch::ZernikeMoments(double *im,int imW,int imH, int n, int m){#define im(ROW,COL) im[imW*(ROW)+(COL)]double zr=0;double zi=0;int cnt=0;int x,y;double p;double radial=0;double theta=0;for (y=0; y<imH; y++){for(x=0; x<imW; x++){p=sqrt((double)((2*x-imW+1)*(2*x-imW+1)+(imH-1-2*y)*(imH-1-2*y)))/imW;if (p<=1){radial=RadialPolynomial(p,n,m);theta=atan2((double)(imH-1-2*y),(double)(2*x-imW+1));zr+=im(y,x)*radial*cos(m*theta);zi+=im(y,x)*radial*sin(m*theta);cnt++;}}}double A=(n+1)*sqrt((double)(zr*zr+zi*zi))/cnt;return A;}

模板匹配之zernike矩相关推荐

  1. OpenCvSharp手绘ROI区域+模板匹配+霍夫变换检测圆的边界

    最终效果如下: 左侧为检测图片.右侧为模板,右下角textbox为轮毂中心的像素坐标 操作步骤: 1.点击打开图像选择一张比较不错的图片,用于画模板: 2.在picturebox中画取ROI区域生成模 ...

  2. OpenCV-python 模板匹配-分水岭-GrabCut

    一.模板匹配 1.单目标 单目标模板匹配的原理:模板图像在输入图像上做滑动操作(类似于 2D 卷积),模板图像与所在原图 patch 做比较,最终返回一个灰度图,每个像素代表该像素的邻域与模板的相似度 ...

  3. 使用OpenCV实现Halcon算法(3)基于轮廓的模板匹配

    声明:本篇仅仅是分享网上的开源项目,算法非本人原创. 〇.算法效果展示 0.1要定位的模板一 找到的匹配 在有污损情况下找到的匹配 0.2要定位的模板2 找到的匹配 一. 理论部分 模板匹配的算法包括 ...

  4. Very fast template matching(非常快的模板匹配)

    Very fast template matching(非常快的模板匹配) Integral image 代数矩的快速计算 快速模板匹配 算法步骤 结果 主要讲述文章"Very Fast T ...

  5. 《OpenCV3编程入门》学习笔记9 直方图与匹配(五)模板匹配

    9.5 模板匹配 基本思想:   在一幅图像中寻找与另一幅模板图像最匹配的部分,通过在输入图像上滑动图像块,对实际的图像块和输入图像进行匹配. 9.5.1 模板匹配:matchTemplate()函数 ...

  6. OpenCV+python:模板匹配

    1,模板匹配的概念及原理 模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术. 我们需要2幅图像: 模板 (T): 将和原图像比照的图像块 原图像 (I): 在这幅图像里,我们希望 ...

  7. OpenCV(项目)车牌识别3 -- 模板匹配

    目录 一.基础理论 1.思想 2.大致过程 二.详细过程 1.首先需要模板库 2.得到模板 3.原图限定大小 4.模板匹配 5.匹配所有子文件夹,保存最佳得分(最匹配项) 三.大致过程(细分类,节省时 ...

  8. OpenCV(二十)模板匹配

    目录 一.基础理论 1.作用与过程 2.原理 3.函数matchTemplate 二.代码 三.效果 参考资料 一.基础理论 1.作用与过程 所谓的模板匹配,就是在给定的图片中查找和模板最相似的区域, ...

  9. 人眼模板匹配自动跟踪

    void trackEye(cv::Mat& im, cv::Mat& tpl, cv::Rect& rect) {// 人眼位置cv::Size pSize(rect.wid ...

最新文章

  1. 12.21 php-fpm的pool 12.22 php-fpm慢执行日志 12.23 open_basedir 12.24 php-fpm进程管理
  2. 合成孔径成像算法与实现_浅析太赫兹成像技术在消防领域中的应用前景
  3. 索尼笔记本bios如何设置VT-x/AMD-V兼容
  4. elasticsearch的update_by_query
  5. 来的多可选_您的框架有多可扩展性?
  6. 想学IT的必看!今年Android面试必问的这些技术面,架构师必备技能
  7. java ssm框架 mapper文件里的#符号和$符号的区别
  8. java中的step_Java中finalize()
  9. MapXtreme2004 连接oracle spatial的问题
  10. c# Winform 开发分屏显示应用程序
  11. 搭建 sock5代理服务器
  12. iOS - LocalNotification
  13. Android lint工具 检查的常见问题
  14. mysql with roll up_GROUP BY...WITH ROLL UP 分组统计后的再合计
  15. 数字图像处理与Python实现-图像变换-Radon变换
  16. 该怎么把光纤接入家里预埋的网线中?
  17. 乌镇现场 | 倪光南:人工智能应该更好的为人类的服务
  18. LostDungeon迷失地牢-壹
  19. 简单的机械臂设计(Splay树)
  20. 振动焊机的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. 差分滤波器的实现及作用于图像提取图像的特征
  2. C语言实现成块数据读写操作 fread() fwrite()
  3. java扫描指定主机的端口socket服务
  4. matlab2c使用c++实现matlab函数系列教程-deconv函数
  5. labelme批量json_to_dataset转换
  6. basys3利用microblaze连接Pmod ad2
  7. zynq文档阅读之EMIO和MIO的细微差别
  8. linux python mysqldb安装包,linux环境下python中MySQLdb模块的安装方法
  9. pandas重置索引的几种方法探究
  10. PL/SQL TOAD 不安装Oracle客户端连接数据库的方法