zoukankan      html  css  js  c++  java
  • 图像拼接、融合的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) 就能满足要求,但是多线程会打乱帧顺序,考虑用队列控制
  • 相关阅读:
    记录按钮点击次数,点击三次之后跳转页面
    HTML拖放
    .Net实现发送邮件功能
    HTTP 400 错误
    方法(参数的传递)
    方法
    c# 属性 (get、set)
    Python和C++交互
    从Windows远程Ubuntu
    Eclipse+Tomcat WEB开发配置
  • 原文地址:https://www.cnblogs.com/wjwjs/p/15258294.html
Copyright © 2011-2022 走看看