顶级公司与逆图像搜索
众所周知,谷歌图片使用逆图像搜索允许用户上传一张图片然后搜索相关联的图片。通过使用先进的算法对提交的图片进行分析和数学建模,然后和谷歌数据库中无数的其他图片进行比较得到相似的结果。
算法 & Python库
在我们使用它工作之前,让我们过一遍构建图像搜索引擎的 Python 库的主要元素:
专利算法
尺度不变特征变换Scale-Invariant Feature Transform(SIFT)算法
- 带有非自由功能的一个专利技术,利用图像识别符,以识别相似图像,甚至那些来自不同的角度,大小,深度和尺度的图片,也会被包括在搜索结果中。点击这里查看 SIFT 详细视频。
- SIFT 能与从许多图片中提取了特征的大型数据库正确地匹配搜索条件。
- 能匹配不同视角的相同图像和匹配不变特征来获得搜索结果是 SIFT 的另一个特征。了解更多关于尺度不变关键点。
加速鲁棒特征Speeded Up Robust Features(SURF)算法
- SURF 也是一种带有非自由功能的专利技术,而且还是一种“加速”的 SIFT 版本。不像 SIFT,SURF 接近于带有箱式过滤器Box Filter的高斯拉普拉斯算子Laplacian of Gaussian。
- SURF 依赖于黑塞矩阵Hessian Matrix的位置和尺度。
- 在许多应用中,旋转不变性不是一个必要条件,所以不按这个方向查找加速了处理。
- SURF 包括了几种特性,提升了每一步的速度。SIFT 在旋转和模糊化方面做的很好,比 SIFT 的速度快三倍。然而它不擅长处理照明和变换视角。
- OpenCV 程序功能库提供了 SURF 功能,SURF.compute() 和 SURF.Detect() 可以用来找到描述符和要点。阅读更多关于SURF点击这里
开源算法
KAZE 算法
- KAZE是一个开源的非线性尺度空间的二维多尺度和新的特征检测和描述算法。在加性算子分裂Additive Operator Splitting(AOS)和可变电导扩散中的有效技术被用来建立非线性尺度空间。
- 多尺度图像处理的基本原理很简单:创建一个图像的尺度空间,同时用正确的函数过滤原始图像,以提高时间或尺度。
加速的 KAZEAccelerated-KAZE(AKAZE) 算法
二进制鲁棒性不变尺度可变关键点Binary Robust Invariant Scalable Keypoints(BRISK)算法
- BRISK 非常适合关键点的描述、检测与匹配。
- 是一种高度自适应的算法,基于尺度空间 FAST 的快速检测器和一个位字符串描述符,有助于显著加快搜索。
- 尺度空间关键点检测与关键点描述帮助优化当前相关任务的性能。