我正在進行圖像識別(標記檢測),並正在研究圖像下采樣預識別以提高性能。推理是我會下載圖像,運行檢測算法,然後使用下采樣因子插入標記座標。我認爲下采樣成本是微不足道的,因爲它一直由我們的GPU完成。圖像下采樣性能
所以我嘗試使用opencv縮減採樣,看到不僅沒有得到任何改進,實際上花了更長的時間。然後我認爲這是因爲我讓CPU做它,所以我研究了使用opengl mipmap或甚至着色器進行縮減採樣,但從我讀過的內容來看,它仍然是一項昂貴的任務,花費數十甚至數百毫秒來減少常見圖像決議。
我的問題是,如果下采樣是連續進行的明顯緩解(想想調整任何圖像查看器上的圖像或視頻遊戲中的任何紋理)爲什麼它使用最常見的方法如此之慢?有一些祕密技術,或者我只是不理解某些東西?
你的紋理有多大?你如何將它們上傳到GL API並讀回結果?這完全有可能是上傳和回讀成本是昂貴的部分,而不是縮減本身。 – solidpixel
@solidpixel通常在做1280x720 - > 640x480。使用glTexImage2D從ram加載它,生成mipmap(glGenerateMipmap),然後使用glGetTexImage –
@AlexButera獲得第二個mipmap,那麼爲什麼你需要'glGetTexImage'?這是你的方法很慢的確切原因。 AFAIR,您可以始終明確提供所需的mipmap級別,而不必前後移動像素數據並創建新的紋理對象。 – hidefromkgb