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

news2024/10/5 21:23:05

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

 

 

 

 

 

2.算法运行软件版本

MATLAB2022a

3.部分核心程序

...........................................................................
%选择移动个数
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('相似性度量值曲线');
03_016m

4.算法理论概述

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

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

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

 

5.算法完整程序工程

OOOOO

OOO

O

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/827961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++库函数——String类的模拟实现

目录 ①String类的主体 ②String类的具体实现 1.构造函数、拷贝构造函数、赋值运算符、析构函数 ⑴构造函数 ⑵拷贝构造函数 ⑶赋值运算符 ⑷析构函数 2.迭代器(范围for的实现原理) 3.修改:push_back, apppend, , clear, swap, c_str ⑴push_b…

【BASH】回顾与知识点梳理(七)

【BASH】回顾与知识点梳理 七 七.前六章知识点总结及练习7.1 总结7.2 练习 七.前六章知识点总结及练习 7.1 总结 由于核心在内存中是受保护的区块,因此我们必须要透过『 Shell 』将我们输入的指令与 Kernel 沟通,好让 Kernel 可以控制硬件来正确无误的…

【Spring】深究SpringBoot自动装配原理

文章目录 前言1、main入口2、SpringBootApplication3、EnableAutoConfiguration4、AutoConfigurationImportSelector4.1、selectImports()4.2、getAutoConfigurationEntry()4.3、getCandidateConfigurations()4.4、loadFactoryNames() 5、META-INF/spring.factories6、总结 前言…

以beam search为例,详解transformers中generate方法(下)

以beam search为例,详解transformers中generate方法(下) 1. beam search原理回顾2. 代码流程概览3. BeamSearchScorer4. BeamHypotheses5. beam_search过程5.1 beam score初始化5.2 准备输入5.3 前向forward5.4 计算下一个step每个token的得分…

网络安全知识点整理(作业2)

目录 一、js函数声明->function 第一种 第二种 第三种 二、this关键字 this使用场合 1.全局环境 2.构造函数 3.对象的方法 避免多层this 三、js的同步与异步 定时器 setTimeout和setInterval 同步与异步的例子 四、宏任务与微任务 分辨宏任务与微任务 一、js…

深度学习——划分自定义数据集

深度学习——划分自定义数据集 以人脸表情数据集raf_db为例,初始目录如下: 需要经过处理后返回 train_images, train_label, val_images, val_label 定义 read_split_data(root: str, val_rate: float 0.2) 方法来解决,代码如下&#xff1a…

【C++】开源:matplotlib-cpp静态图表库配置与使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍matplotlib-cpp图表库配置与使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下&…

RK3588开发板 (armsom-w3) 之 USB摄像头图像预览

硬件准备 RK3588开发板(armsom-w3)、USB摄像头(罗技高清网络摄像机 C93)、1000M光纤 、 串口调试工具 v4l2采集画面 v4l2-ctl是一个用于Linux系统的命令行实用程序,用于控制视频4 Linux 2(V4L2&#xff0…

晚读“散文”一篇之随感

近来天气太热,上网写作的激情锐减,午后“昏睡百年”至近5点半才睡眼惺忪地起床。因深陷上网日日写作长达14年之久,也便如同“吸粉成瘾”的“瘾君子”戒不了毒瘾一样管束不了自己的“鼠标手”,就打开了电脑。 恍惚间步入了网络上的…

Dockerfile构建apache镜像(源码)

Dockerfile构建apache镜像&#xff08;源码&#xff09; 1、建立工作目录 [rootdocker ~]# mkdir apache [rootdocker ~]# cd apache/ 2、编写Dockerfile文件 [rootdocker apache]# vim Dockerfile #基于的基础镜像 FROM centos:7#镜像作者信息 MAINTAINER Huyang <133…

Java通过freemark创建word文档

创建freemarker模板 创建Freemarker模板&#xff1a;在您的Java项目中&#xff0c;创建一个Freemarker模板文件&#xff08;例如template.ftl&#xff09;&#xff0c;其中包含您想要生成的Word文档的内容。您可以在模板中使用Freemarker的标记来插入动态内容。 <!DOCTYPE…

Spring如何通过三级缓存解决循环依赖问题?

目录 一、什么是Spring 二、循环依赖问题 三、三级缓存机制 四、如何通过三级缓存解决循环依赖问题 一、什么是Spring Spring框架是一个开源的Java应用程序开发框架&#xff0c;提供了一种全面的、一致的编程模型&#xff0c;用于构建企业级应用程序和服务。它由Rod Johnso…

如何压缩高清PDF文件大小?将PDF文件压缩到最小的三个方法

PDF格式是一种非常常用的文档格式&#xff0c;但是有时候我们需要将PDF文件压缩为更小的大小以便于传输和存储。在本文中&#xff0c;我们将介绍三种PDF压缩的方法&#xff0c;包括在线PDF压缩、利用软件PDF压缩以及使用WPS缩小pdf。 首先&#xff0c;在线PDF压缩是最常用的方…

人体大脑神经元运行模拟器!让你直观体验大脑的运行方式

首先&#xff0c;宣布沾花把玖正式回归&#xff01;&#xff01;&#xff01; 最近沾花在网上看到一个神奇的网站&#xff1a;A Neural Network Playground 经过沾花的亲手测试&#xff0c;发现这玩意儿能模拟人体大脑神经元的运行&#xff01; 下面是网址&#xff1a; A N…

干货!机器视觉基础知识汇总

现如今,中国已经成为世界机器视觉发展最为活跃地区,应用范围涵盖了工业、农业、医药、军事、航天、气象等国民经济各个行业。虽然机器视觉的成长速度非常快,但是还是有很多人对机器视觉并不了解,今天我们来了解下机器视觉。 机器视觉就是用机器代替人眼来做测量和判断。机器…

一条自由游动的鲸鱼

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>鲸鱼</title><style>#canvas-container {width: 100%;height: 100vh;overflow: hidden;}&l…

Linux(二)---------网络命令学习(ifconfig命令)

1.ifconfig命令 用于配置网卡ip地址信息&#xff0c;等网络参数信息&#xff0c;或者查看显示网络接口信息&#xff0c;类似于windows的ipconfig命令&#xff0c;还能够临时性的配置ip地址&#xff0c;子网掩码&#xff0c;广播地址&#xff0c;网关信息等。 注意ifconfig命令…

配置GIt账号、配置公钥

1.设置账号和邮箱 打开终端输入以下命令&#xff1a; git config --global --unset-all user.name git config --global --unset-all user.email然后输入以下命令来设置新的账号和邮箱&#xff1a; git config --global user.name "your_username" git config --glo…

整理了250个shell脚本,拿来即用!

无论是系统运维&#xff0c;还是应用运维&#xff0c;均可分为“纯手工”→ “脚本化”→ “自动化”→“智能化”几个阶段&#xff0c;其中自动化阶段&#xff0c;主要是将一些重复性人工操作和运维经验封装为程序或脚本&#xff0c;一方面避免重复性操作及风险&#xff0c;另…

【音视频SDK测评】线上K歌软件开发技术选型

摘要 在线K歌软件的开发有许多技术难点&#xff0c;需考虑到音频录制和处理、实时音频传输和同步、音频压缩和解压缩、设备兼容性问题等技术难点外&#xff0c;此外&#xff0c;开发者还应关注音乐版权问题&#xff0c;确保开发的应用合规合法。 前言 前面写了几期关于直播 …