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) 就能满足要求,但是多线程会打乱帧顺序,考虑用队列控制
  • 相关阅读:
    git线上操作
    IDEA快捷方式
    Java 四种线程池
    java 获取当前天之后或之前7天日期
    如何理解AWS 网络,如何创建一个多层安全网络架构
    申请 Let's Encrypt 通配符 HTTPS 证书
    GCE 部署 ELK 7.1可视化分析 nginx
    使用 bash 脚本把 AWS EC2 数据备份到 S3
    使用 bash 脚本把 GCE 的数据备份到 GCS
    nginx 配置 https 并强制跳转(lnmp一键安装包)
  • 原文地址:https://www.cnblogs.com/wjwjs/p/15258294.html
Copyright © 2011-2022 走看看