为啥 sift.compute() 在 MSER 关键点上比在 SIFT 关键点上慢
Posted
技术标签:
【中文标题】为啥 sift.compute() 在 MSER 关键点上比在 SIFT 关键点上慢【英文标题】:Why is sift.compute() slower on MSER keypoints than on SIFT keypoints为什么 sift.compute() 在 MSER 关键点上比在 SIFT 关键点上慢 【发布时间】:2021-09-18 19:34:44 【问题描述】:在 1080x1080 图像上测试来自 openCV 的 sift 提取器的性能得到了一些意想不到的结果:
img = cv.imread("myImage.jpg", 0) # gray
mser = cv.MSER_create()
sift = cv.SIFT_create()
kp = sift.detect(img) # len(kp) == 5804
des = sift.compute(img, kp) # time: 0.22s
kp = mser.detect(img) # len(kp) == 2511
des = sift.compute(img, kp) # time: 1.62s
与 SIFT 检测到的关键点相比,为什么 sift.compute()
在 MSER 检测到的关键点上速度较慢?请注意,MSER 检测到的关键点比 SIFT 少。
【问题讨论】:
使用检测+计算时高斯尺度空间的差异是否只计算一次或两次?也许 sift 描述符正在使用预先计算的信息,而在 mser 中没有预先计算的信息,所以在描述期间必须完成那部分? 【参考方案1】:我绘制的关键点清楚地表明 MSER 关键点比 SIFT 关键点覆盖更大的区域。这可以解释为什么它更慢。
MSER:
SIFT:
【讨论】:
以上是关于为啥 sift.compute() 在 MSER 关键点上比在 SIFT 关键点上慢的主要内容,如果未能解决你的问题,请参考以下文章