我正在进行图像识别(标记检测),并正在研究图像下采样预识别以提高性能。推理是我会下载图像,运行检测算法,然后使用下采样因子插入标记坐标。我认为下采样成本是微不足道的,因为它一直由我们的GPU完成。图像下采样性能
所以我尝试使用opencv缩减采样,看到不仅没有得到任何改进,实际上花了更长的时间。然后我认为这是因为我让CPU做它,所以我研究了使用opengl mipmap或甚至着色器进行缩减采样,但从我读过的内容来看,它仍然是一项昂贵的任务,花费数十甚至数百毫秒来减少常见图像决议。
我的问题是,如果下采样是连续进行的明显缓解(想想调整任何图像查看器上的图像或视频游戏中的任何纹理)为什么它使用最常见的方法如此之慢?有一些秘密技术,或者我只是不理解某些东西?
你的纹理有多大?你如何将它们上传到GL API并读回结果?这完全有可能是上传和回读成本是昂贵的部分,而不是缩减本身。 – solidpixel
@solidpixel通常在做1280x720 - > 640x480。使用glTexImage2D从ram加载它,生成mipmap(glGenerateMipmap),然后使用glGetTexImage –
@AlexButera获得第二个mipmap,那么为什么你需要'glGetTexImage'?这是你的方法很慢的确切原因。 AFAIR,您可以始终明确提供所需的mipmap级别,而不必前后移动像素数据并创建新的纹理对象。 – hidefromkgb