图像拼接、融合的surf算法流程

图像处理

--SURF算法

完成图像卷积、通过海塞矩阵测特征值、完成特征点的64维描述

精度和稳定性不如sift算法,但综合来看,比较适合处理视频流

 

1.保证尺度无关性,对像素点进行高斯滤波(高斯平滑处理+二阶导数),再构造海塞矩阵,计算特征值

 

 

 2.找出特征点

其中0.9是原著作者给的经验值,特征点表示由像素点的海塞矩阵行列式近似值构成

3.构造高斯金字塔

区别于sift,每组图像大小不变,改变滤波器(高斯模糊模板)的尺寸和尺度σ,没有了降采样的步骤,所以提升了速度,精确度相对下降,但对于视频流总体可接受。

4.定位特征点

非极大值抑制。将每个像素点与其三维邻域的26个点进行大小比较,若这个点是极值,则保留用作初步特征点,采用三维线性插值法(根据8个点的像素值得到一个点的像素值)得到亚像素级的特征点,去掉小于一定阈值的点,留下特征最强的点集

5.确定特征点主方向

为保证旋转不变性,不统计其梯度直方图,只统计特征点领域内的Harr小波特征,计算半径为6σ(经验值)的圆形区域内,统计60°扇形内特征点的Harr矢量之和,遍历圆形区域,选择最长harr矢量方向为主方向。

6.构造特征描述子

在特征点周围取一个长方形矢量框,边长20σ ,方向即特征点主方向,分16份,每份统计25个像素的水平、垂直方向(相对于主方向)的haar小波特征(Σdx,Σ|dx|,Σdy,Σ|dy|),即每个特征点是16*4=64维向量。

7.匹配、筛选、拼接

比较最近邻距离与次近邻距离的sift匹配方式:

取图A的一个关键点a,找出其与图B中欧氏距离,最近的前两个关键点b, c之间的距离s1 s2(设s1<s2),则a--b为一对匹配点

 

ratio=s1/s2,若ratio小于某个阈值T(0.4~0.6),则接受这一对匹配点

 

通过单应性矩阵进行拼接

A = MB  其中AB是两个图对应点的三位坐标,找出两对对应点即可求出矩阵M,把图2所有像素点进行矩阵变换即可。

8.融合

加权平均法。简单的使用加权的方式从左边过渡到右边,匹配点的像素值为A*05+B*0.5

视频流处理

任务需求:

摄像头图像大小为640*512,fps为25

 

  1. 通过对视频流的帧处理得到图像,fps在10-20左右可以满足一般的监控需求,但估算算法的执行效率平均大概在0.7左右甚至更慢。fps想要达到25,需要控制处理帧的数量和使用多线程并行处理。
  2. 临近几帧的图像基本相同,可以隔几帧调用一次算法。
  3. Fps为25,意味着效率要在0.04,再算上网络延时,很难达到效果,采用多线程并行执行算法,理论上,(单次调用算法执行时间 / 线程数量 < 0.04) 就能满足要求,但是多线程会打乱帧顺序,考虑用队列控制

 

posted @ 2021-09-12 15:38  瓜大wjs  阅读(997)  评论(0编辑  收藏  举报