看板 C_and_CPP 關於我們 聯絡資訊
我弄了個實驗 圖都是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
LiloHuang: 時間都花在 JPEG decode,換 libjpeg-turbo 應該會變快 09/14 12:29
LiloHuang: 至於 SSD 加速端看輸入的圖片有多大,512x512 實在不大 09/14 12:30
Feis: 是我誤會了 RAW 的意思~ Orz 09/14 12:32
fire0947: 所以讀取raw檔會比其他類型的檔案快,是這意思嗎? 09/16 16:36
bdvstg: 一般raw就是指解完的資料 (未經加工的) 09/16 16:53
bdvstg: 一般像jpg或是png都是經過壓縮/包裝的檔案 09/16 16:54
bdvstg: 解資料(還原資料)需要時間 09/16 16:54
bdvstg: 我這邊試的結果 讀512*512*RGB的檔案 時間花費不到1ms 09/16 16:56
Bencrie: I/O 那邊 OS 有 cache,沒處理的話測不準吧 09/19 14:02
bdvstg: 所以我讀64個不同的檔案這樣也會快取? 09/19 18:47