【图像匹配】基于Harris算法的图像匹配,matlab实现

ops/2024/9/23 2:22:05/

       博主简介:matlab图像代码项目合作(扣扣:3249726188

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        本次案例是基于基于Harris算法图像匹配,用matlab实现。

 一、案例背景和算法介绍

        前面的博客文章我们介绍图像处理的一个重要领域算法:图像匹配图像匹配的算法比较多,有基于SIFT、SURF、Harris等特征的匹配算法,这次介绍的算法是Harris匹配算法。前期介绍的算法如下:

        SIFT匹配:基于SIFT算法的图像匹配(【图像匹配】基于SIFT算法的图像匹配,matlab实现-CSDN博客)

       SURF匹配:基于SURF算法的图像匹配(【图像匹配】基于SURF算法的图像匹配,matlab实现-CSDN博客)

        下面简要介绍一下Harris算法

Harris角点检测算法的基本原理‌

Harris角点检测算法是由‌Chris Harris和‌Mike Stephens在1988年提出的,它通过计算图像中每个像素点的自相关矩阵来确定角点。该算法使用一个固定窗口在图像上滑动,比较滑动前后的灰度变化,如果灰度变化显著,则认为该位置为角点。

Harris角点检测算法的步骤

  1. 将图像转换为灰度图像。
  2. 计算图像的梯度,获取像素的水平和垂直梯度。
  3. 计算每个像素的二阶矩阵(自相关矩阵)。
  4. 计算每个像素的响应函数值(角点响应函数)。
  5. 应用非极大值抑制,抑制非极大值点。
  6. 根据阈值筛选出角点。

Harris角点检测算法的优点

  • 旋转不变性‌:Harris角点检测算法具有旋转不变性,即旋转后的图像仍然能够准确检测到角点。
  • 对亮度和对比度的变化不敏感‌:该算法对亮度和对比度的变化具有较好的鲁棒性。
  • 计算简单‌:Harris角点检测算法的计算过程相对简单,且提取的角点特征均匀合理,性能稳定。

Harris角点检测算法的应用场景

  • 摄像机标定‌:通过检测图像中的角点,可以用于摄像机的标定,提高摄像机的精度。
  • 虚拟场景重建‌:在虚拟场景重建中,角点检测可以帮助构建三维模型。
  • 运动估计‌:在运动估计中,角点检测可以用于跟踪物体的运动。
  • 图像配准‌:在图像配准中,角点检测可以帮助实现图像之间的对齐。

     关于Harris算法的网上资料也是非常多,这里同样不做详细介绍。这里概述一下匹配的主要步骤,跟SIFT匹配类似,主要是特征算法不同,后续匹配步骤是一致的:

        1、获取Harris特征,得到特征之后,接下来就是匹配

        2、计算特征距离值,如符合一定规则(如设置距离少于某个值),则认为符合初步匹配

        3、利用RANSAC算法去除误匹配

        主要的matlab主函数代码如下:

clear
clc
close all% 读取原图
img1 = imread('hall1.jpg');
img2 = imread('hall2.jpg');% 显示
figure
subplot(1,2,1)
imshow(img1);
title('原图1');
subplot(1,2,2)
imshow(img2);
title('原图2');% 转换为double数据
img1Dup=rgb2gray(img1);
img1Dup=double(img1Dup);
img2Dup=rgb2gray(img2);
img2Dup=double(img2Dup);% Harris算法角点提取
[locs1] = Harris(img1Dup);
[locs2] = Harris(img2Dup);% 初步匹配,用 NCC 算法寻找匹配点
[matchLoc1 matchLoc2] =  findCorr(img1Dup,img2Dup,locs1, locs2);% 用 RANSAC 去除误匹配点
[H inlierIdx] = estHomography(img1Dup,img2Dup,matchLoc2',matchLoc1');

       下面看看具体的matlab实现效果。

        完成匹配后,可以根据匹配效果做图像拼接操作了,这个后续的算法再做介绍。

二、Matlab实现效果

        原图:

初步匹配效果:

去除误匹陪效果:


http://www.ppmy.cn/ops/113948.html

相关文章

Docker_启动redis,容易一启动就停掉

现象以及排查过程 最近在使用docker来搭建redis服务,但是在启动redis哨兵容器时,总是发现这个容器启动后立马就停止了。首先想到的是不是服务器资源不够用了导致的这个现象,排查后发现不是资源问题。再者猜测是不是启动报错了,查看…

Unity教程(十六)敌人攻击状态的实现

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程(零)Unity和VS的使用相关内容 Unity教程(一)开始学习状态机 Unity教程(二)角色移动的实现 Unity教程(三)角色跳跃的实现 Unity教程&…

sql基础语法及常见函数等

一、SQL语句的种类 1、DDL(Data Definition Language,数据定义语言): CREATE:用于创建数据库和表等对象。 DROP:用于删除数据库和表等对象。 ALTER:用于修改数据库表的结构,如添加…

MATLAB图像处理

MATLAB图像处理 MATLAB,作为美国MathWorks公司出品的商业数学软件,以其强大的矩阵运算能力和丰富的函数库,在图像处理领域得到了广泛的应用。MATLAB不仅提供了基础的图像处理功能,还通过图像处理工具箱(Image Process…

PostgreSQL JAVA与SQL集成之PL/Java

PostgreSQL pljava PL/Java 作为 PostgreSQL 的编程语言扩展之一,与 PL/pgSQL(PostgreSQL 原生的存储过程语言)相比,提供了 Java 语言特有的面向对象功能,并支持 Java 的标准库和第三方库。由于 Java 是一种跨平台的语…

《MmAP : Multi-Modal Alignment Prompt for Cross-Domain Multi-Task Learning》中文校对版

系列论文研读目录 文章目录 系列论文研读目录摘要1 引言2 相关工作3 方法3.1对比图像预训练3.2 多模式对齐提示3.3 多任务提示学习框架 4 实验4.1基准设置4.2实验结果4.3消融研究 5、结论 摘要 多任务学习(Multi-Task Learning,MTL)是为了同…

Linux基本命令(初学者必备)

ubuntu下载软件工具的命令 更新软件源 sudo apt-get update 下载软件 sudo apt-get install 软件的名字 下载vim sudo apt-get install vim 在linux中写代码 1. 打开ubuntu上的shell终端 快捷键:ctrlaltt或者双击terminal图标 2. 打开或者新…

一、机器学习算法与实践_03概率论与贝叶斯算法笔记

1、概率论基础知识介绍 人工智能项目本质上是一个统计学项目,是通过对 样本 的分析,来评估/估计 总体 的情况,与数学知识相关联 高等数学 ——> 模型优化 概率论与数理统计 ——> 建模思想 线性代数 ——> 高性能计算 在机器学…