使用FAST检测,SURF描述更快?
对于我的主论文,我正在对智能手机上徽标检测的快速算法进行一些测试. 当我简单地计时检测时,描述某些方法匹配时,我会得到以下结果. 对于冲浪检测器和冲浪描述符: 找到180个关键点 1,994秒关键点计算时间(冲浪) 4,516秒描述时间(冲浪) 0.282秒匹配时间(冲浪) 当我使用快速检测器代替冲浪检测器 时 319个关键点 0.023秒关键点计算时间(快速) 1.295秒说明时间(冲浪) 0.397秒匹配时间(冲浪) 快速检测器比冲浪探测器快得多,甚至探测到几乎是100倍的关键点的两倍.这些结果是可以预见的. 下一步不是预测的结果. De Surf描述符如何使用319个快速关键点更快,然后使用180个冲浪关键点? 据我所知,描述与检测算法没有关系...但是这些结果尚未预测. 有人知道这是怎么可能的吗? 这是代码: FeatureDetector detector = Featu
2 2024-02-03
编程技术问答社区
在增强现实中使用SIFT
我遇到了许多AR库/SDK/API,它们都是基于标记的,直到我找到此视频从描述和评论中,看起来他正在使用sift检测对象并绕过对象. 我需要为Android做到这一点,因此我需要在纯Java中进行完整的SIFT实现. 我愿意这样做,但我需要知道首先将SIFT用于增强现实. 我可以利用您提供的任何信息. 解决方案 我认为,试图实施 sift "> sift 对于便携式设备而言疯狂. SIFT是一种图像特征提取算法,它包括复杂的数学,当然需要大量的计算能力. SIFT也获得了专利. 仍然,如果您确实想继续执行此任务,那么一开始应该做很多研究.您需要检查以下内容: 任何提高性能的SIFT的变体,包括各周围的不同算法 我建议您研究 Surf 它非常强大,更快(但仍然是一个)这些可怕的算法) android ndk (稍后再解释) 很多出版物 为什么Android NDK?因为您可能会通过在Java应用程序使用的C库中实现算法来获得更大的性能增长.
0 2024-02-01
编程技术问答社区
视觉词袋:什么是合理的词(向量)维度?
在特征/视觉词袋 paradigm我们有一个vector V在k> -Dimensions中,其中V[i]=j如果i -th centroid(通过k> - 均值算法获得)是所有j j visual deScriptors(例如筛选描述符). afaik,由于k>确实很大,因此所产生的视觉向量非常稀疏(这意味着大多数条目是0值),但是我的问题是: k的合理价值是什么((那么矢量大小)?数百个维度?成千上万?特别是考虑到k均值执行时间取决于k. 解决方案 实际上取决于您的数据.这是经验法则: 太小的K:您的簇不会代表所有补丁. 太大的K:您可能会得到量化伪像,并且可能过于拟合.
2 2024-01-23
编程技术问答社区
比较存储在mysql数据库中的SIFT特征
我目前正在扩展一个用于对图像进行分类的图像库,我想查找重复的图像,转换的图像以及包含或包含在其他图像中的图像. 我已经测试了OpENCV的SIFT实现,并且效果很好,但是对于多个图像来说,它会很慢.它也加快了它,我认为我可以提取这些功能并将其保存在数据库中,因为许多其他与图像相关的元数据已经存在. 将新图像的功能与数据库中的功能进行比较的最快方法是什么? 通常,使用KD-Trees,Flann或使用由于我不知道有效地保存和搜索KD-Tree的方法,因此我目前只看到三个选项: *让MySQL计算到数据库中的每个功能的欧几里得距离,尽管我敢肯定,这会花费不合理的时间来完成多个图像. *在开始时将整个数据集加载到内存中,并构建KD-Tree(S).这可能很快,但记忆力很强.加上所有数据都需要从数据库传输. *将生成的树保存到数据库中并加载所有这些树是最快的方法,但也会产生大量的流量,就像使用新图像一样,KD-Trees必须重建并发送到服务器. . 我正在使用OpenCV
0 2024-01-23
编程技术问答社区
在Ubuntu的OpenCV中找不到xfeatures2d
我正在使用OPENCV版本3.2.0,而Xfeatures2D在此上找不到.有什么办法可以将其安装到相同版本的OpenCV? >>> import cv2 >>> help(cv2.xfeatures2d) Traceback (most recent call last): File "", line 1, in AttributeError: 'module' object has no attribute 'xfeatures2d' 解决方案 http://www.pyimagesearch.com/2015/06/22/install-opencv-3-3-0-and-python-python-2-7-7-on-ubuntu/ 此链接具有与OpenCV_Contrib一起安装OpenCV 3所需的所有步骤. 如果xfeatures2d即使完成上述链接中提到的所有步骤也无法正常工作,则克隆 https://github.com
10 2023-11-01
编程技术问答社区
OpenCV Python特征检测:如何提供一个掩码? (SIFT)
我正在使用OpenCV3在Python3中构建一个简单的项目,试图将拼图件与"完成"拼图图匹配.我已经使用SIFT开始了测试. 我可以提取拼图的轮廓并裁剪图像,但是由于大多数高频都居住在零件周围(零件结束和地板开始),所以我想将口罩传递给SIFT detectandCompute()方法,因此迫使算法仅在作品中查找关键点. test_mask = np.ones(img1.shape, np.uint8) kp1, des1 = sift.detectAndCompute(img1, mask = test_mask) 通过测试掩码(确保是UINT8),我会收到以下错误: kp1,des1 = sift.detectandcompute(img1,mask = test_mask) cv2.err:/home/pyimagesearch/opencv_contrib/modules/xfeatures2d/src/sift.cpp:772:error:(--5)fu
20 2023-10-30
编程技术问答社区
如何建立一个SIFT描述符数据库?
如何创建(图像)的筛分描述符数据库? 我的目的是在支持向量机上实施一个监督的培训. 解决方案 您需要哪种图像?如果您不在乎,您只需下载一些公共计算机视觉数据集,例如 http:///lear.inrialpes.fr/~jegou/data.php#holidays 提供图像并已经从其地区进行了筛选. 或尝试其他数据集,例如,摘自 http://www.cvpapers.com/datasets.com/datasets.htmlfy/a/a > 其他可能性只是下载\制作大量照片,检测兴趣点并用筛分描述它们.可以用 opencv , openCV示例. #include #include #include void WriteSIFTs(std::vector &keys, cv::M
4 2023-10-06
编程技术问答社区
使用VLFEAT实现Bags of Words对象识别
我正在尝试在MATLAB中实现弓对象识别代码.这个过程有些复杂,我在该过程上找到适当的文档遇到了很多麻烦.那么有人可以仔细检查我的计划是否有意义吗? 我正在使用Training: 1. Extract SIFT image descriptor with VLSIFT 2. Quantize the descriptors with k-means(vl_hikmeans) 3. Take quantized descriptors and create histogram(VL_HIKMEANSHIST) 4. Create SVM from histograms(VL_PEGASOS?) 我了解步骤1-3,但是我不确定SVM功能是否正确. vl_pegasos进行以下操作: W = VL_PEGASOS(X, Y, LAMBDA) 我如何与我创建的直方图完全使用此功能? 最后,在识别阶段,如何将图像与SVM定义的类匹配? 解决方案 您是否查看了他们的 c
8 2023-10-06
编程技术问答社区
使用SIFT功能培训SVM分类器
请我喜欢用SIFT描述符和SVM在4级中对一组图像进行分类.现在,使用Sift Extractor我获得不同尺寸的关键点,例如IMG1具有100个关键点IMG2具有55个关键点....如何构建具有MATLAB 的固定尺寸向量的直方图 解决方案 在这种情况下,也许密集的筛分是一个不错的选择. 有两个主要阶段: 阶段1 :创建一个代码簿. 将输入图像分为一组子图像. 对每个子图像应用筛分.每个关键点将具有128维特征向量. 通过简单地使用选择的k应用K-Means聚类来编码这些向量以创建代码簿.每个图像将产生一个矩阵 v i (i
2 2023-10-06
编程技术问答社区
C++/SIFT/SQL-是否有办法将图像的SIFT描述符与SQL数据库中的SIFT描述符进行有效比较?
我想找到一种方法,可以将图像(查询)的筛分描述符与SQL数据库中的描述符进行比较,该数据库包含许多不同图片的描述符. 实际上,我的最终目的是执行一个应用程序,该应用程序可以将一张图片与数据库中的大量图片进行比较(不是在我的设备中). 我认为的第一件事是将每个描述符存储在SQL数据库中,并使用Brute Force方法或基于Flannebed方法将每个描述符与另一个描述符进行比较.问题在于,在SQL数据库中,由于匹配背后的"数学"(例如,euclidean距离为sqrt(a² +b 2 +...),因此需要很长时间来计算匹配.在一个巨大的数据库中进行这种比较. 例如,如果我没记错的话,筛选描述符包含128个数字,请想象将每个描述符的每个数字比较的时间. 如果有另一种方法可以做这些事情?我知道在SQL数据库中,当您使用"从b中选择A. 因此,我想知道是否有一种有效的方式库存SIFT描述符的方法?例如,我想到"将描述符"成一个大弦链,每个链条都是独一无二的,因此我可以
26 2023-09-24
编程技术问答社区
链接opencv的非自由组件(特别是SIFT功能和OCL)。
我在操作系统升级后(Ubuntu 12.04到14.04)和重新安装OpenCV时遇到了麻烦. 一般问题是我使用以下过程从源中编译的OpenCV的"非免费"部分: mkdir ~/OpenCV && cd ~/OpenCV wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.10/opencv-2.4.10.zip unzip opencv-2.4.10.zip cd opencv-2.4.10 cmake -D WITH_CUDA=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr . make sudo make install 这将安装非免费库,如CMAKE的输出中所验证的: -- General configuration for OpenCV 2.4.10 =================
8 2023-08-12
编程技术问答社区
SIFT能否实时运行?
是否有sift的C/C ++实现在〜2.2GHz的处理器和4GB的RAM中实时运行?或用于提取〜2000关键的筛分功能和描述符的最低运行时. Andrew Vedaldi的C ++实施时间大约为2000个关键. 解决方案 Generaly No.即使使用现代PC,SIFT的精确实现也无法实时运行. 但是GPU /a>. 更快的替代方法是冲浪,但仍然不是实时的.我只知道在现代手机上实时运行的DOH描述符的实现,但不是公开的. 其他解决方案 如上所述,筛选无法实时运行.但是,您可以改用二进制描述符,该描述符可提供快速替代方案的准确性和性能.可以在此处找到有关二进制描述符的一系列教程: 简介: http://gilscvblog.wordpress.com/2013/08/26/binary-descriptors-part-1/ 简介: orb: 轻快: 怪胎: openCV用法示例: http://docs.opencv.org/doc/doc/doc/u
18 2023-08-02
编程技术问答社区
ValueError: 不能将大小为2的序列复制到尺寸为4的数组轴上
有人可以向我解释这个错误来自哪里?这是什么意思?我该如何解决? 也许我的问题是如此一般!抱歉,我不知道我应该在这里放更多! :p 错误: Traceback (most recent call last): File "C:\test\7.4.3.bench.py", line 9, in print imagesearch.compute_ukbench_score(src,imlist[:100]) File "C:\test\imagesearch.py", line 168, in compute_ukbench_score pos[i] = [w[1]-1 for w in src.query(imlist[i])[:4]] File "C:\test\imagesearch.py", line 128, in query h = self.get_imhistogram(imname) File "
96 2023-07-12
编程技术问答社区
使用opencv从SIFT生成百分比的相似度分数
我一直在尝试找到一种使用python(2.7.x)openCV(2.4.9)的SIFT进行比较的图像后,以生成相似性评分的方法(in%).我只能找到在比赛之间绘制线条的示例.我该如何进行. 解决方案 MATLAB中有VL_UBCMATCH函数的OPENCV等效. 这是摘录摘自摘录摘自# create BFMatcher object bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True) # Match descriptors. matches = bf.match(des1,des2) matches = bf. match (des1, des2)匹配两组描述符,并返回DMATCH对象的列表.此DMATCH对象具有四个属性:距离,TrainIdx,QueryIdx,imgidx.这些返回值等效于VL_UBCMATCH函数. 希望您会发现它有帮助.
20 2023-07-12
编程技术问答社区
OpenCV Orb算法的QR码匹配问题
我正在使用Python OpenCV遵循有关功能检测,功能检测和匹配的视频教程.视频使用ORB(定向快速和旋转的简介)算法,如下所示: https://youtu.be/nnh555-zd38i 因此,我决定使用它的示例2图像,而在代码上进行了几乎没有修改. 有2个输入映像,1个带有单QR码(SINCE.JPG)的输入映像,另一些具有不同的QR码(多人JPG).目的是在较大的图像(多人JPG)中找到最相似的区域.但是获得完全不同的QR码的匹配. 为什么它标记了不同的区域,我们可以在此示例上进行改进? import cv2 MULTIPLE_NAME ="...multiple.jpg" SINGLE_NAME = "...single.jpg" multiple = cv2.imread(MULTIPLE_NAME) single = cv2.imread(SINGLE_NAME) orb=cv2.ORB_create() kpsingle,dessingle
18 2023-07-09
编程技术问答社区
用python生成的空/无SIFT描述符和关键点
我正在尝试通过一组图像补丁创建代码簿.我将图像(加州理工学院101)分为20 x 20图像贴片.我想为每个补丁创建一个SIFT描述符.但是对于某些图像补丁,它不会返回任何描述符/关键点.我尝试使用OpenCV和VLFEAT. 使用任何库是相同的行为. 以下是我使用OpenCV的代码 - sift = cv2.SIFT() img = cv2.imread('patch_temp.jpg',0) imgptch = cv2.imread('image_patch.jpg',cv2.CV_LOAD_IMAGE_GRAYSCALE) kp, des = sift.detectAndCompute(imgptch,None) print des des是"无".如果我使用vlfeat也是如此. 注意:如果我使用其他图像,则可以使用上述工作.它没有返回某些图像(10中的6个). 我已经使用openCV索引创建了图像补丁 - patch = img[0:20,0:20]
34 2023-07-08
编程技术问答社区
使用贡献模块安装openCV
我使用opencv3.3.1运行Python3.6(32位). 我看到了本教程,所以我正在尝试与SIFT描述符匹配的野蛮力量:我读到,默认安装中不再包含包括筛分在内的一些模块,需要单独安装.我在Python官方网站上找到了带有conter模块的OpenCV3下载(我认为该模块包含SIFT).具体而言,我从这里下载了OpenCV_Contrib_python-3.3.3.3.3.3.0.10.10.10-cp36-cp36-cp36m-win32.whl(md5): https://pypi.python.org/pypi/opencv-contrib-python#downloads 我已经卸载了以前的OpenCV,并安装并导入了此新版本的OpenCV,并验证了我正在运行新版本. 但是,当我尝试使用cv2.sift()时,我仍然会遇到模块Cv2.cv2没有属性'sift'的错误. 我下载了正确的软件包吗?我安装的软件包中都应该包含所有OPENCV模块吗? 解
14 2023-07-07
编程技术问答社区
OpenCV-Python密集型SIFT设置
这是先前发布的问题的后续问题,该问题有关使用openCvs在Python中使用OpenCVS( opencv-python密集筛). 使用建议的密度筛分的建议代码 dense=cv2.FeatureDetector_create("Dense") kp=dense.detect(imgGray) kp,des=sift.compute(imgGray,kp) 我有以下问题: 我可以访问python中的任何密集介质属性吗?设置还是至少阅读? c ++ s特色eTector ::创建pythons pythons featuredetector_create背后的逻辑是什么?我怎么知道,基于文档( org/模块/功能2D/doc/councom_interfaces_of_feature_detectors.html )? 关于VLFEAT库的Python包装器的任何建议? PyvlFeat是否仍然需要解决(我尝试设置Pyvlfeat,但没有
26 2023-07-06
编程技术问答社区
OpenCV绘制非匹配点
I have followed OpenCV Feature Detection and Description tutorial OPENCV中的SIFT和其他算法在2个图像之间找到匹配的特征点.据我了解,这些算法可以找到2个图像之间的相似区域.但是我有兴趣识别不同或相似的区域. 如何在这两个图像上绘制所有不匹配的特征点?此外,我可以围绕这些非匹配点绘制边界以显示2个图像中的哪些区域? 我在Windows 7上使用Python代码,并从最新的OpenCV源构建. 解决方案 在两个图像上绘制所有非匹配特征点: 一旦您知道匹配器对象是由两个描述符的 match 产生的(matches = bf.match(des1,des2)).与此问题相关的两个匹配器对象的属性如下: dmatch.trainidx :描述符的索引(或火车描述符中的火车图像中的键盘) dmatch.QueryIdx :描述符的索引(或查询描述符中查询映像的键盘) 然后,知道这些信息
16 2023-07-05
编程技术问答社区
如何用Brute-Force Matching / SIFT Descriptors获得匹配点的位置
我尝试将我的筛选器与BF匹配器匹配.我曾经这样做,例如但是,如果我想获得x,y位置print(good)它只会给我这样的东西: DMatch 000001DD9C4E0EB0 如何将其转换为位置? 解决方案 当您没有提供代码时,我根据教程中的代码回答您的问题. 基本上,按键是通过旋转,比例和x,y位置的筛分算法检测到的点,而描述符只是用于匹配它们的功能的向量. 在匹配变量中,您可以在描述符(DMATCH)之间进行一组匹配.关键点位于KP1和KP2中. 要找到匹配的两个点(P1,P2),请使用这样的代码: for match in matches: p1 = kp1[match.queryIdx].pt p2 = kp2[match.trainIdx].pt
8 2023-07-03
编程技术问答社区