首页 > 编程语言 >基于方向编码的模板匹配算法matlab仿真

基于方向编码的模板匹配算法matlab仿真

时间:2023-09-24 21:58:40浏览次数:41  
标签:仿真 匹配 16 Images0 直方图 matlab 图像 模板

1.算法运行效果图预览

 

 

2.算法运行软件版本

MATLAB2022a

 

3.算法理论概述

        模板匹配是一种常见的计算机视觉方法,用于在一幅图像中寻找指定的模板。它在目标检测、图像识别、物体跟踪等领域中有广泛的应用。基于方向编码的模板匹配算法是一种改进的模板匹配方法,它通过将图像转化为方向编码的形式,实现了更加高效和准确的模板匹配。本文将详细介绍基于方向编码的模板匹配算法,包括数学原理、实现过程以及应用领域。

 

         本文选用方向码[7]作为特征来计算出近似的旋转角度和 进行基于像素点的匹配,整个匹配分两步进行。首先计算出 模板和模板覆盖下的子图的方向码图像,在此基础上得到模板和子图的方向码直方图,移动子图方向码直方图,每移动一 次计算二者直方图之间的相似程度,若相似性度量值大于预 先规定的阈值,则子图的左上角像素点就被选为候选的匹配 点,旋转角度依据直方图的移动次数估算得出。然后在每一 个匹配候选点上,根据第 1 步中得出的近似旋转角度旋转模 板后,得到旋转后的模板方向码图像,再计算子图和模板间的 相似程度,最相似的匹配点通过综合第 1 步和第 2 中得到的 相似性度量值得出。第 1 步中估算出的旋转角度排除了对每 一个侯选匹配点按各个可能的方向进行旋转的必要,从而加 快了匹配速度。

 

       算法的流程图如下图所示:

 

 

4.部分核心程序

%选择移动个数
N        = 2;% 选择移动个数
% 读取模板图像和第一幅子图像
Images0  = imread([num2str(17-N),'.jpg']);
% 将子图像转换为双精度类型
Images0  = func_convert(Images0);
Template = imread('match.jpg');
% 将匹配模板图像转换为双精度类型
Template = func_convert(Template);
% 获取匹配模板图像的行数和列数
[R,C]    = size(Template);% 初始化相似性度量值数组
for j = 1:16% 循环进行图像匹配
    j
    %移动
    % 移动子图,选择下一幅子图像
    index    = 16-N+j;
    if index > 16;
       index = index-16;
    end
    Images0  = imread([num2str(index),'.jpg']);
    Images0  = func_convert(Images0);% 将子图像转换为双精度类型
    % 调用 func_Orientation_codes 函数计算匹配模板图像和子图像的方向码直方图特征
    f1 = func_Orientation_codes(Template);% 计算模板图像的方向码直方图特征
    f2 = func_Orientation_codes(Images0);% 计算子图像的方向码直方图特征
    f  = [f1;f2]';
    % 计算相似性度量值
    for i = 1:16
        d(i) = 1-sum(abs(f1(i)-f2(i)))/(max(f1(i),f2(i)));     
    end
    d2(j) = mean(d);
    pause(0.1);
end
% 对于 j=16 的相似性度量值需要放到数组的开头,使得曲线绘制时顺序正确
d3(1)=d2(16);
d3(2:16)=d2(1:15);
% 绘制相似性度量值曲线
figure;
plot(0:15,d3,'b-o')
axis([0,15,0.5,1.2]);
grid on;
title('相似性度量值曲线');

  

标签:仿真,匹配,16,Images0,直方图,matlab,图像,模板
From: https://www.cnblogs.com/matlabworld/p/17726754.html

相关文章

  • 【模板】多项式乘法、乘法逆、除法、取模、常系数齐次线性递推
    以下代码必须开-O2#include<algorithm>#include<cassert>#include<cstdio>#include<cstring>#include<vector>usingnamespacestd;#ifdefLOCAL#definedebug(...)fprintf(stderr,##__VA_ARGS__)#else#definedebug(...)void(0)#......
  • R语言Gibbs抽样的贝叶斯简单线性回归仿真分析|附代码数据
    全文下载链接:http://tecdat.cn/?p=4612最近我们被客户要求撰写关于贝叶斯简单线性回归的研究报告,包括一些图形和统计输出。贝叶斯分析的许多介绍都使用了相对简单的教学实例(例如,根据伯努利数据给出成功概率的推理)。虽然这很好地介绍了贝叶斯原理,但是这些原则的扩展并不是直截了......
  • Matlab绘制图表
    学习一门技术最好的方式就是阅读官方文档,可以查看MATLAB官方文档二维图表折线图函数图形描述loglog()x轴和y轴都取对数坐标semilogx()x轴取对数坐标,y轴取线性坐标semilogy()x轴取线性坐标,y轴取对数坐标plotyy()带有两套y坐标轴的线性坐标系ploar()极坐标系对数坐标系图线下面例......
  • 嵌入式软件调试与验证2仿真
    2仿真环境中的嵌入式软件调试2.1固件调试方法概述目前的EDA环境提供了各种固件调试方法。通常可以使用以下方法之一:使用硬件的SystemC模型进行仿真这可以在不接触硬件的情况下尽早开始固件开发,并在假设模型准确的情况下测试代码的功能。主要局限是缺乏系统视图和(取决于模......
  • KMP【模板】
    P3375【模板】KMP字符串匹配点击查看代码#include<bits/stdc++.h>usingnamespacestd;constintN=1e6+10;strings1,s2;intne[N];voidget_ne(){ ne[1]=0; intn=s2.length(); for(inti=2,j=0;i<=n;i++){ while(j&&s2[j+1]!=s2[......
  • 模板
    #include<bits/stdc++.h>usingnamespacestd;#definelsp<<1#definersp<<1|1#definelsonls,l,mid#definersonrs,mid+1,r#defineroot1,1,nconstintN=1e6+9,mod=1e9+7;typedeflonglongll;intn,m,a[N];structtree{ intl,r,......
  • matlab-动图
    matlab中的gif动图%彩色图像,举个例子,n个图片%对于实际图形,常用到frame=getframe(fig);im(idx)=frame2im(frame);n=100;fori=1:nimg{i}=im2uint8(rand(512,512,3));end%将图片组合成gif图filename='test_rgb.gif';foridx=1:n[A,map]=rgb2ind......
  • matlab-griddata函数
    四维图,xyz-v(经度、纬度、深度--速度),对于不规则的数据进行三维插值,griddata函数。%readthevelocityperturbationfilename='dv';delimiterIn='';headerlinesIn=1;A=importdata(filename,delimiterIn,headerlinesIn);lat=A.data(:,1);lon=A.data(:,2);de......
  • Altair SimSolid仿真技术应用 衡祖仿真
    空中客车公司宣布,选择AltairSimSolid仿真技术加入ZEROe全球计划。AltairSimSolid将为空客的设计和工程团队节省大量的时间、成本和麻烦,可将基本零件的分析交付时间从几天缩短到几分钟,并在某些情况下将复杂的装配交付时间从几个月缩短到不到一周。此外,AltairSimSolid的操作和界......
  • 基于Yolov2深度学习网络的车辆检测算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本MATLAB2022A 3.算法理论概述        车辆检测是计算机视觉领域中的一个重要问题。它在自动驾驶、智能交通系统、交通监控以及车辆计数等应用场景中起着至关重要的作用。近年来,深度学习在图像识别领域取得了显著的......