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

八卦阵  金牌会员 | 2024-9-17 16:41:50 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 631|帖子 631|积分 1893

       博主简介: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角点检测算法的步骤


  • 将图像转换为灰度图像。
  • 计算图像的梯度,获取像素的程度和垂直梯度。
  • 计算每个像素的二阶矩阵(自相关矩阵)。
  • 计算每个像素的相应函数值(角点相应函数)。
  • 应用非极大值抑制,抑制非极大值点。
  • 根据阈值筛选出角点。
Harris角点检测算法的长处



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



  • 摄像机标定‌:通过检测图像中的角点,可以用于摄像机的标定,提高摄像机的精度。
  • 假造场景重修‌:在假造场景重修中,角点检测可以资助构建三维模子。
  • 运动估计‌:在运动估计中,角点检测可以用于跟踪物体的运动。
  • 图像配准‌:在图像配准中,角点检测可以资助实现图像之间的对齐。
     关于Harris算法的网上资料也黑白常多,这里同样不做详细介绍。这里概述一下匹配的主要步骤,跟SIFT匹配类似,主要是特征算法不同,后续匹配步骤是一致的:
        1、获取Harris特征,得到特征之后,接下来就是匹配
        2、计算特征距离值,如符合一定规则(如设置距离少于某个值),则认为符合开端匹配
        3、使用RANSAC算法去除误匹配
        主要的matlab主函数代码如下:
  
  1. clear
  2. clc
  3. close all
  4. % 读取原图
  5. img1 = imread('hall1.jpg');
  6. img2 = imread('hall2.jpg');
  7. % 显示
  8. figure
  9. subplot(1,2,1)
  10. imshow(img1);
  11. title('原图1');
  12. subplot(1,2,2)
  13. imshow(img2);
  14. title('原图2');
  15. % 转换为double数据
  16. img1Dup=rgb2gray(img1);
  17. img1Dup=double(img1Dup);
  18. img2Dup=rgb2gray(img2);
  19. img2Dup=double(img2Dup);
  20. % Harris算法角点提取
  21. [locs1] = Harris(img1Dup);
  22. [locs2] = Harris(img2Dup);
  23. % 初步匹配,用 NCC 算法寻找匹配点
  24. [matchLoc1 matchLoc2] =  findCorr(img1Dup,img2Dup,locs1, locs2);
  25. % 用 RANSAC 去除误匹配点
  26. [H inlierIdx] = estHomography(img1Dup,img2Dup,matchLoc2',matchLoc1');
复制代码
       下面看看详细的matlab实现结果。
        完成匹配后,可以根据匹配结果做图像拼接操作了,这个后续的算法再做介绍。
二、Matlab实现结果
        原图:

开端匹配结果:

去除误匹陪结果:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

八卦阵

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表