博主简介: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主函数代码如下:
- 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实现结果
原图:
开端匹配结果:
去除误匹陪结果:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |