我正在尝试决定是否将大量图片的计算描述符保存在本地文件或数据库中是否有趣(每张 .png 图片的分辨率为 500x500,权重约为 25kb)。
使用带有 Brief-32 描述符的 ORB,单个描述符的权重约为 3 兆字节。这样的大小将保持不变,因为我所有的照片都是相同的尺寸。
为了找出最快的我运行了以下两个测试:
## TEST : Import descriptor from file
listOfDec = list()
start = datetime.now()
for i in range(0, 100):
listOfDec.append(np.loadtxt("DESC_TEST".txt"))
end = datetime.now()
time_taken = end - start
print('Time: ',time_taken)
## TEST : Compute descriptor from source image
listOfDec = list()
start = datetime.now()
for i in range(0, 100):
img1 = cv2.imread(dirPath+picture,0)
a, desc = orb.detectAndCompute(img1, None)
listOfDec.append(desc)
end = datetime.now()
time_taken = end - start
print('Time: ',time_taken)
老实说,我认为加载数据比重新计算整个描述符要快。
这是我的测试结果:
所以现在我很困惑。我知道 ORB 是一种非常快的算法,但是“生成”一个 3MB 的描述符比从 ssd 磁盘读取它要快得多吗?我的基准有什么问题吗?
谢谢你。