ncc匹配提速总结

我们ncc最原始的匹配方法是:学习模板w*h个像素都要带入ncc公式计算

第一种提速,学习模板是w*h,而我们支取其中的w/2*h/2,匹配窗口同理,计算量只有1/4。

另外一种因为ncc是线性匹配,我们在这上面也做了文章,即我们匹配时,可以缩小原图像,从而加快匹配,即使用了ncc的缩放性匹配。

第二种提速,这个计算量比第一种还少。

第三种:就是直方图方式匹配,归一化到256次计算。

第四中:如果你用二值化图像,那么直方图只有2中灰度,即0和255,那么这个ncc直方图匹配归一化到2次计算。这个在初选中,应该非常快

第五种:轮廓梯度角度直方图ncc匹配,就是找学习得到的轮廓和匹配轮廓的梯度角度,归一化到360度次计算,0和180合并,实质只有180度次计算,20度合并,最后做九次计算,这是我最先实现的ncc匹配,这种可以完成旋转也可以ncc匹配。

第六种,轮廓ncc匹配,我们第五种,归一化到360度,其实这个我们可以归一化到点到中心的距离,即幅值的统计,另一个,就是轮廓的凸多边形归一化。

第七种:就是斑点的ncc匹配,即使用学习和匹配斑点的个数及位置进行ncc匹配,个数ok后,位置匹配,只用x或只用y进行ncc即可,我们前头也做了尝试。

我看到的大概就这几种,一个是轮廓ncc,一个是找斑ncc,一个是直方图想方法,最后就是最原始的融通理解之后,实现的两种ncc变换。

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NCC(Normalized Cross Correlation)匹配是一种常用的图像匹配方法,它可以用于在两幅图像中找到相似的区域。在实际应用中,NCC匹配的计算量较大,因此需要加速算法的实现。其中,积分图是一种有效的加速方法,可以将NCC匹配的计算复杂度从O(n^2)降低到O(n),其中n是图像大小。 Matlab中可以使用积分图函数`integralImage`来生成积分图,同时使用`normxcorr2`函数进行NCC匹配。具体步骤如下: 1.将待匹配的模板图像和目标图像都转换为灰度图像。 2.使用`integralImage`函数分别生成模板图像和目标图像的积分图。 3.计算模板图像的平均值和标准差,用于归一化处理。 4.使用`normxcorr2`函数进行NCC匹配,得到匹配结果。 下面是一个简单的示例代码: ```matlab % 读入图像 template = rgb2gray(imread('template.jpg')); target = rgb2gray(imread('target.jpg')); % 生成积分图 integ_template = integralImage(template); integ_target = integralImage(target); % 计算模板图像的平均值和标准差 mean_template = mean(template(:)); std_template = std(template(:)); % 归一化处理 norm_template = (template - mean_template) / std_template; % NCC匹配 corr = normxcorr2(norm_template, target); % 显示匹配结果 figure; imshow(target); hold on; [x,y] = find(corr == max(corr(:))); rectangle('Position',[y(1)-size(template,2)/2,x(1)-size(template,1)/2,size(template,2),size(template,1)],'EdgeColor','r','LineWidth',2); ``` 其中,`rectangle`函数用于在目标图像上绘制匹配结果的矩形框。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值