【局部特征】ASIFT
由于相机正面白摄物体时,相机的光轴方向可能发生变化,带来扭曲。而SIFT算法虽具有完全的尺度不变性,但不具有完全的仿射不变性,对拍摄角度发生大角度空间变化的图像特征提取有一定的局限性。ASift通过模拟经度与纬度实现完全的仿射不变,然后用SIFT算法把模拟图像进行比较,最后实现特征匹配。
ASIFT算法的具体步骤如下:
1.选取采样参数,模拟不同经度与纬度的图像。
2.计算模拟图像的特征。
3.结合所有的模拟图像的特征,进行特征匹配。
注意:ASIFT提供的一种框架,其核心思想是模拟不同的经度与纬度的图像,具体模拟图像的特征提取和匹配,可选择SIFT、SURF等特征。
ASIFT算法代码资源:
http://www.ipol.im/pub/art/2011/my-asift/
https://github.com/Itseez/opencv/blob/master/samples/python2/asift.py
OpenCV只提供python实现的asift,如果需要在C++中使用asift,主要有两种方法可参考。
1.利用作者提供的C++代码,具体使用方法可参考作者提供的文档。
2.将asift.py翻译成C++代码。
asift.py代码相对清晰,转换成基于OpenCV的C++代码比较容易,我主要参用方法2,实现ASIFT算法。
遇到的问题:
1.处理分辨率较大图片时,出现OpenCV Error: Insufficient memory的错误。
经分析,计算过程需要保存多张模拟图片的特征点和特征描述子,需要大量内存,导致OpenCV分配内存时,没有连续可用的内存块,从而出现OpenCV Error: Insufficient memory的错误。
解决方法:降低待处理图片的分辨率,并计算高分辨率到低分辨率转换的单应性矩阵scaleH。利用ASift算法计算低分辨率图片的匹配的单应性矩阵matchH。最终待处理图片的单应矩阵H=matchH*scaleH。
2.计算复杂度问题。
由于需要处理多幅模拟图片的特征点检测,计算复杂度高。目前,主要有两种思路:1).降低分辨率,减少计算量。2).利用硬件特性进行硬件计算。
ASift作者在文中提到的Two-Resolution Procedure.
(1).采用系数K*K二次采样查询图片u和待搜索图片v。u = SkGku,v=SkGkv,Gk是反走样高斯离散滤波器,SK为K*K二次采样。
(2).低分辨率下的ASIFT算法:对查询图片u和搜索图片应用ASIFT算法;
(3).确定u和v中可能产最多匹配对的M种仿射变换;
(4).高分辨率下的ASIFT算法:在原始图像u和v上使用ASIFT算法,但模拟倾科时只使用这M种仿射变换。
经实验测试,发现Two-Resolution Procedure虽然可以在一定降低复杂度,但其对匹配精度会有一定的影响,对于匹配精度要求高的应用不太合适。
Asift.py中,利用线程池加速多幅图像的特征点检测,使得多幅图像的特征点检测同时进行。
结合多线程的思想,我利用每个线程,计算每幅图像的特征点的检测,结果遇到内存不足的问题。
主要原因:特征点检测过程需要内存空间存储部分中间结果,当多线程同时计算时,所需内存增大,出现内存不足的问题。
解决方法:可以根据待处理图片的分辨率大小和系统提供内存资源的多少,自适应确定多线程的数目。
利用GPU加速ASIFT计算,具体步骤如下:
(1).将待处理图片传输到GPU端。
(2).将待处理图片模拟变换,得到模拟图片,AffineImage_Kernel。
(3).计算模拟图片的特征点,KeyPointsDetect_Kernel。
(4).将计算所得的特征点数据传输到CPU端。
(5).循环处理(2)、(3)、(4)步骤,直到所有模拟变换处理完。
(6).在CPU端完成特征点匹配计算。
注意:(4)与(5)可以异步执行,重叠计算与特征点数据传输的时间。
基于GPU特征点计算主要参考:
SiftGPU: http://cs.unc.edu/~ccwu/siftgpu/
CudaSift: https://github.com/Celebrandil/CudaSift
注意:经测试,发现SiftGPU和CudaSift检测出的特征点数目与OpenCV的SiftFeatureDetector检测出特征点数目差异较大。
【局部特征】ASIFT的更多相关文章
- 论文解读丨基于局部特征保留的图卷积神经网络架构(LPD-GCN)
摘要:本文提出一种基于局部特征保留的图卷积网络架构,与最新的对比算法相比,该方法在多个数据集上的图分类性能得到大幅度提升,泛化性能也得到了改善. 本文分享自华为云社区<论文解读:基于局部特征保留 ...
- BRIEF特征简介
引言 该文是由EPFL的Calonder在ECCV2010上提出了一种可以快速计算且表达方式为二进制编码的描述子.主要思路就是在特征点附近随机选取若干点对,将这些点对的灰度值的大小,组合成一个二进制串 ...
- LSH︱python实现局部敏感随机投影森林——LSHForest/sklearn(一)
关于局部敏感哈希算法.之前用R语言实现过,可是由于在R中效能太低.于是放弃用LSH来做类似性检索.学了python发现非常多模块都能实现,并且通过随机投影森林让查询数据更快.觉得能够试试大规模应用在数 ...
- Computer Vision_33_SIFT:SAR-SIFT: A SIFT-LIKE ALGORITHM FOR SAR IMAGES——2015
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- Image Processing and Computer Vision_Review:Recent Advances in Features Extraction and Description Algorithms: A Comprehensive Survey——2017.03
翻译 特征提取和描述算法的最新进展:全面的调查 摘要 - 计算机视觉是当今信息技术中最活跃的研究领域之一.让机器和机器人能够以视线的速度看到和理解周围的世界,创造出无穷无尽的潜在应用和机会.特征检测和 ...
- 阿里巴巴直播内容风险防控中的AI力量
直播作为近来新兴的互动形态和今年阿里巴巴双十一的一大亮点,其内容风险监控是一个全新的课题,技术的挑战非常大,管控难点主要包括业界缺乏成熟方案和标准.主播行为.直播内容不可控.峰值期间数千路高并发处理. ...
- 马里奥AI实现方式探索 ——神经网络+增强学习
[TOC] 马里奥AI实现方式探索 --神经网络+增强学习 儿时我们都曾有过一个经典游戏的体验,就是马里奥(顶蘑菇^v^),这次里约奥运会闭幕式,日本作为2020年东京奥运会的东道主,安倍最后也已经典 ...
- 【NLP】基于自然语言处理角度谈谈CRF(二)
基于自然语言处理角度谈谈CRF 作者:白宁超 2016年8月2日21:25:35 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务 ...
- 【NLP】基于统计学习方法角度谈谈CRF(四)
基于统计学习方法角度谈谈CRF 作者:白宁超 2016年8月2日13:59:46 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务 ...
随机推荐
- CMD复制文件夹
CMD复制文件夹 xcopy /E/I/Y "D:\GitHub\WIP\app" "D:\GitHub\WIP_server\html\webshell"
- ES6 对象解构
ES6 对象解构 第一眼看到,什么鬼? const { body } = document `` 其实等于: const body = document.body ``` http://es6.rua ...
- RESTORE DATABASE的standby选项
RESTORE DATABASE [db1] FROM DISK = N'E:\Backup\db2.bak' , MOVE N'db1_Data' TO N'D:\Data\db2.MDF', MO ...
- svn的安装与使用
Eclipse安装SVN插件 1.下载最新的Eclipse,我的版本是3.7.2 indigo(Eclipse IDE for Java EE Developers)版 如果没有安装的请到这里下载安装 ...
- MyEclipse在搭建s2sh时 如何 uninstalled facet
在资源管理器中:找到当前[项目的根目录],在[.setting]目录中, 找到[org.eclipse.wst.common.project.facet.core.xml]文件. 用[文本编辑器工具] ...
- webstorm使用技巧
WebStorm快捷键收集:模式visual studio 代码提示:ctrl + alt + 空格 代码补全:alt + / 代码换行:ctrl + shift + 上下箭头 重新运行:ctrl + ...
- Java多线程系列--“JUC集合”10之 ConcurrentLinkedQueue
概要 本章对Java.util.concurrent包中的ConcurrentHashMap类进行详细的介绍.内容包括:ConcurrentLinkedQueue介绍ConcurrentLinkedQ ...
- 优秀工具推荐:超实用的 CSS 库,样板和框架
当启动一个新的项目,使用 CSS 框架或样板,可以帮助您节省大量的时间.在这篇文章中,我编译整理了我最喜欢的 CSS 样板,框架和库,帮助你在建立网站或应用程序时更加高效. 您可能感兴趣的相关文章 精 ...
- 分享一个Jquery 分页插件 Jquery Pagination
分页插件来说,我觉得适用就行,尽量简单然后能够根据不同的应用场景能够换肤.展现形式等. 对于初学者想写分页插件的同学,也可以看下源码,代码也挺简单明了的,也助于自己写个小插件. 不过我比较懒,一般直接 ...
- Asp.Net工作原理
1. ASP.NET页面的的一般处理过程: 客户请求WEB页面 WEB服务寻找指令文件(.ASPX) ASP.NET代码被发送给CLR进行编译 HTML流返回给浏览器和指令 浏览器处理HTML并显示页 ...