基于ORB算法的图像匹配

基础理论

2006RostenDrummond提出一种使用决策树学习方法加速的角点检测算法,即FAST算法,该算法认为若某点像素值与其周围某邻域内一定数量的点的像素值相差较大,则该像素可能是角点。

其计算步骤如下:

1)基于FAST算法进行特征点的提取

2)特征点附加方向

Matlab程序

ORB算法的Matlab主程序代码实现如下:
%% 主程序
% 读取图像
im1 = imread('baby1.JPG');
im2 = imread('baby2.JPG');
scale = [1, 0.75, 0.5, 0.25];
im1_grey = rgb2gray(im1);
im2_grey = rgb2gray(im2);
% FAST算法进行特征点的提取及得分计算
[corner1, fscore1] = fast9(im1_grey,20, 1);
[corner2, fscore2] = fast9(im2_grey,20, 1);
% 非极大值抑制
[corner1,fscore1] = FAST_filter(im1_grey,corner1,fscore1);
[corner2,fscore2] = FAST_filter(im2_grey,corner2,fscore2);
% 提取 Harris 特征点及得分
H1 = harris(im1_grey);
H2 = harris(im2_grey);
harris1 = H1(sub2ind(size(H1),corner1(:,2),corner1(:,1)));
harris2 = H2(sub2ind(size(H1),corner2(:,2),corner2(:,1)));
% 利用Harris得分优化 FAST 特征点
[~,idx1] = sort(harris1);
[~,idx2] = sort(harris2);
cnr1 = corner1(idx1(1:400),:);
cnr2 = corner2(idx2(1:400),:);
% 特征点附加方向提取
angle1 = orientation(im1_grey,[cnr1(:,2),cnr1(:,1)]);
angle2 = orientation(im2_grey,[cnr2(:,2),cnr2(:,1)]);
% 计算BRIEF附加旋转
run('sampling_param.m')
br1 = rBRIEF(im1_grey,cnr1,sample,angle1);
br2 = rBRIEF(im2_grey,cnr2,sample,angle2);
% 寻找匹配点 
matches = findmatches(br1,br2, cnr1, cnr2);
% 匹配点(注意,存在大量异常值!)
feature1 = matches(:,1:2);
feature2 = matches(:,3:4);
%随机样本一致性(RANdom SAmple Consensus,RANSAC)
%去除异常值是必要的一步!
[H,inlr] = computeHomography(feature1,feature2,3,1000);
% 转置、画图;
Hp = H';
tform = projective2d(Hp);
I = imwarp(im1,tform,'OutputView', imref2d(size(im2)));
I = uint8((double(I) + double(im2))./2);
%% 匹配结果显示
newImg = cat(2,im2_grey,im1_grey); %两张图像并排显示
figure;imshow(newImg)
% imwrite(newImg,'match2.jpg');
hold on
plot(feature2(:,1),feature2(:,2), 'ro','MarkerSize',5,'LineWidth',0.7)
plot(feature1(:,1)+size(im2,2),feature1(:,2), 'm*','MarkerSize',5,'LineWidth',0.7)
for i = 1:size(matches,1)plot([matches(i,3) matches(i,1)+size(im2,2)],[matches(i,4) matches(i,2)],'c')
end
% title('ORB图像匹配结果')
frame=getframe(gcf);
im=frame2im(frame);
imwrite(im,'ORB图像匹配结果.jpg');

案例图片

基于ORB算法的图像匹配结果 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MCU最小系统原理图中四个问题详解——芯片中有很多电源管脚的原因(VDD/VSS/VBAT)、LC滤波、两级滤波、NC可切换元件

前言:本文对MCU最小系统原理图中的四个问题进行详解:芯片中有很多电源管脚的原因(VDD/VSS/VBAT)、LC滤波、两级滤波、NC可切换元件。本文以GD32F103C8T6最小系统原理图举例 目录: 芯片中有很多电源管脚的原因&#x…

自然语言处理(Natural Language Processing,NLP)解密

专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9 Python 专栏:http://t.csdnimg.cn/hMwPR Redis 专栏:http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏:http://t.csdni…

zabbix邮件告警

目录 一、获取邮箱的授权码(自行解决) 二、 配置报警媒介(收件人) 三、配置报警媒介类型 四、定义一个动作(前提是主机,监控项,触发器都已配置成功) 一、获取邮箱的授权码&#x…

探索图像检索:从理论到实战的应用

目录 一、引言二、图像检索技术概述图像检索的基本概念图像检索与文本检索的区别特征提取技术相似度计算索引技术 三、图像检索技术代码示例图像特征提取示例相似度计算索引技术 四、图像搜索流程架构数据采集与预处理特征提取相似度计算与排名结果呈现与优化 五、实际应用图像…

如何为不同品牌的笔记本电脑设置充电限制,这里提供详细步骤

笔记本电脑的电池健康状况至关重要。延长电池寿命可以帮你省下不少钱。对于长时间充电的Windows 11笔记本电脑用户来说,将电池电量限制在80%是很重要的。 虽然操作系统没有提供设置自定义电池充电限制的内置方法,但仍有一些方法可以在Windows 11中配置电池设置,并将其限制在…

大数据导论(3)---大数据技术

文章目录 1. 大数据技术概述2. 数据采集与预处理2.1 数据采集2.2 预处理 3. 数据存储和管理3.1 分布式基础架构Hadoop3.2 分布式文件系统HDFS3.3 分布式数据库HBase3.4 非关系型数据库NoSQL 4. 数据可视化与保护 1. 大数据技术概述 大数据技术主要包括数据采集与预处理、数据存…

【网络安全】-入门版

secure 一、基本工具1、metasploit framework ps.本着兴趣爱好,加强电脑的安全防护能力,并严格遵守法律和道德规范。一、基本工具 1、metasploit framework msf(metasploit framework)是一个开源的渗透测试框架,用于…

回调地狱与解决方案

什么是回调地狱? 简单理解就是回调函数嵌套回调 示例: setTimeout(() > {console.log(1);setTimeout(() > {console.log(2);setTimeout(() > {console.log(3);}, 1000);}, 2000)}, 3000)如上代码所示,回调函数嵌套回调,就…

docker安装 mysql 8.0.32

首先下载 mysql 其次如果虚拟机以前安过mysql 需要把mysql关闭 命令 永久关闭mysql 但是当前不生效 需要重启虚拟机 systemctl enable mysqld 如果不想重启虚拟机 可以执行 systemctl stop mysqld //指定版本 docker pull mysql:8.0.32 // 拉取最新的…

keep-alive组件缓存

keep-alive组件缓存 从a跳b,a已经销毁,b重新渲染;b跳a,b销毁a重新渲染 源组件销毁,目标组件渲染 组件缓存:组件实例等相关( 包括vnode)存储起来 重新渲染指的是:把视图重…

2023年,世界在战,世界大战

一、前言 2023年,世界好不热闹,巴以冲突、俄乌战争、胡塞武装袭击、中美贸易战。可谓是一浪接着一浪,大有一种你方唱罢我方登场的气势。因此,今年给我印象最深的就是,这个世界怎么了?这些战争什么时候…

PGSQL安装PostGIS扩展模块

一、PostGIS简介 1、PostGIS介绍 PostGIS是一个空间数据库,空间数据库像存储和操作数据库中其他任何对象一样去存储和操作空间对象。 空间数据与数据库关联起来的三个要素:数据类型、索引和函数。 空间数据类型:用于指定图形为点&#xff0…