Re: [問題] 用OpenCV與GPU做影像處理

看板C_and_CPP (C/C++)作者 (bdvstg)時間10年前 (2015/09/14 12:05), 編輯推噓3(307)
留言10則, 5人參與, 最新討論串2/2 (看更多)
我弄了個實驗 圖都是512x512,RGB三色 圖有兩張 一張是隨機產生的雜訊圖,表示高亂度,壓縮比低 (以complex表示) 一張是全黑的圖,表示低亂度,高壓縮比 (以simple表示) 每張圖都分別用jpg(75%品質)、png、raw存檔 6個檔案,每個檔案複製了64個副本 每個檔案都讀這64次來平均讀取時間 simple jpg 4ms simple png 2ms simple raw 0.3ms complex jpg 9.5ms complex png 9ms complex raw 0.3ms 後來發現我原本的寫法,raw有事先分配記憶體 對imread有點不公平 就把分配記憶體的加進去 raw的時間變大概接近0.6ms 然後我有測過SSD和HDD 時間差不多,可能檔案太小的緣故吧 底下為程式碼連結 http://codepad.org/AFAPaAbk 專案及測試用檔案 https://goo.gl/sj2d7H ※ 引述《fire0947 (戳戳)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : Ubuntu 12.04 : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : OpenCV 2.4.10 : 問題(Question): : 我想要在Linux的作業系統下利用 OpenCV 與 GPU 來做影像處理, : 對一張512*512圖片做 Hough 轉換,從讀取圖片到完成 Hough 轉換後, : 希望能夠在10ms內完成。 : 步驟分別大略如下: : 1.讀取圖片 : imread() : 2.Canny轉換 : gpu::Canny : 3.Color轉換 : gpu::Color : 4.Hough轉換 : gpu::Hough : 步驟一花費了我大約5ms,二到四大約則為6ms, : 這樣就無法達成我10ms內完成影像處理的要求了, : 其中我發現在讀取圖片的code部分,好像只能用CPU來讀取?? : 小弟不才,分別有下列的問題想請教 : Q1.讀取圖片只能用CPU讀取?無法用GPU? : Q2.現在的顯示卡為NVIDIA GeForce GT 740,若換更好一點顯卡, : 讓CUDA的核心數增加,步驟二到四的部份,時間能縮短到滿足我的要求嗎? : Q3.若能縮短不少時間,會購買更高階的顯示卡 : 預算三萬元的情況下,有哪些比較推薦的顯示卡? : 預算十萬元的情況下,又有哪些比較推薦的顯示卡? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.96.40.71 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1442203511.A.3BB.html

09/14 12:29, , 1F
時間都花在 JPEG decode,換 libjpeg-turbo 應該會變快
09/14 12:29, 1F

09/14 12:30, , 2F
至於 SSD 加速端看輸入的圖片有多大,512x512 實在不大
09/14 12:30, 2F

09/14 12:32, , 3F
是我誤會了 RAW 的意思~ Orz
09/14 12:32, 3F

09/16 16:36, , 4F
所以讀取raw檔會比其他類型的檔案快,是這意思嗎?
09/16 16:36, 4F

09/16 16:53, , 5F
一般raw就是指解完的資料 (未經加工的)
09/16 16:53, 5F

09/16 16:54, , 6F
一般像jpg或是png都是經過壓縮/包裝的檔案
09/16 16:54, 6F

09/16 16:54, , 7F
解資料(還原資料)需要時間
09/16 16:54, 7F

09/16 16:56, , 8F
我這邊試的結果 讀512*512*RGB的檔案 時間花費不到1ms
09/16 16:56, 8F

09/19 14:02, , 9F
I/O 那邊 OS 有 cache,沒處理的話測不準吧
09/19 14:02, 9F

09/19 18:47, , 10F
所以我讀64個不同的檔案這樣也會快取?
09/19 18:47, 10F
文章代碼(AID): #1LzaTtEx (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1LzaTtEx (C_and_CPP)