[問題] 有快速將二維vector賦值的方法嗎?
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Borland C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
opencv
不過應該沒啥影響
問題(Question):
用途是影像處理
struct cost{
int occR;
int occL;
int R;
int G;
int B;
int visibility;
int disparity;
};
用cost這個struct建了一個全域的二維vector warp[375][450],warp大小即為圖像大小
因為演算法需要,warp需要重複的使用,次數大概是6千多次
但是每次使用前必須賦予初始值
PS.不一定是0,可能是-1 or -2,但一樣的類別就是一樣的值
warp[][].occR=-2
warp[][].R=0
大概是這樣
於是我另外創了一個非全域的二維vector warp_temp[375][450],一樣的struct
裡面都先丟好我要的初始值,當要使用到warp的時候,再將warp = warp_temp即可
這樣的寫法說實在真的很慢,因為struct裡面有7個int
光是初始化而已,就可以耗掉我10幾秒的時間,還沒加上演算法
請問有更好的解法嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.238.115
※ 編輯: wayne0411 來自: 114.32.238.115 (06/11 17:52)
→
06/11 17:53, , 1F
06/11 17:53, 1F
※ 編輯: wayne0411 來自: 114.32.238.115 (06/11 17:55)
推
06/11 18:11, , 2F
06/11 18:11, 2F
收到,我試試看
剛剛把cost改寫
struct cost{
bool occR;
bool occL;
BYTE R;
BYTE G;
BYTE B;
bool visibility;
unsigned int disparity;
};
這樣速度大概是6~7秒,果然int挺肥大的XDD
※ 編輯: wayne0411 來自: 114.32.238.115 (06/11 18:16)
推
06/11 20:47, , 3F
06/11 20:47, 3F
→
06/11 20:54, , 4F
06/11 20:54, 4F
→
06/11 21:18, , 5F
06/11 21:18, 5F
→
06/11 21:18, , 6F
06/11 21:18, 6F
→
06/11 22:22, , 7F
06/11 22:22, 7F
→
06/11 22:22, , 8F
06/11 22:22, 8F
→
06/11 22:24, , 9F
06/11 22:24, 9F
推
06/11 22:28, , 10F
06/11 22:28, 10F
→
06/11 22:44, , 11F
06/11 22:44, 11F
→
06/11 22:49, , 12F
06/11 22:49, 12F
→
06/11 22:50, , 13F
06/11 22:50, 13F
→
06/11 23:00, , 14F
06/11 23:00, 14F
推
06/11 23:04, , 15F
06/11 23:04, 15F
→
06/11 23:04, , 16F
06/11 23:04, 16F
→
06/11 23:04, , 17F
06/11 23:04, 17F
事實上,現在搞得這個演算法真的很想用sulti-thread下去弄
因為效率真的很差(雖然老闆是說有效果就OK,速度不計><
一方面沒去學 一方面時間很緊繃,碩三的六月XD
→
06/11 23:05, , 18F
06/11 23:05, 18F
→
06/11 23:06, , 19F
06/11 23:06, 19F
→
06/11 23:07, , 20F
06/11 23:07, 20F
※ 編輯: wayne0411 來自: 114.32.238.115 (06/11 23:15)
→
06/11 23:13, , 21F
06/11 23:13, 21F
→
06/11 23:19, , 22F
06/11 23:19, 22F
→
06/11 23:29, , 23F
06/11 23:29, 23F
→
06/11 23:32, , 24F
06/11 23:32, 24F
→
06/11 23:32, , 25F
06/11 23:32, 25F
→
06/12 00:42, , 26F
06/12 00:42, 26F
→
06/12 00:56, , 27F
06/12 00:56, 27F
不算是,但是目的相同,對初始Depth做優化
→
06/12 01:08, , 28F
06/12 01:08, 28F
→
06/12 01:12, , 29F
06/12 01:12, 29F
openmp剛看了一下相當吸引人,有時間的話來try一下
EdisonX大說的是(汗顏
這段當然不是瓶頸,只是好奇有沒有別的方法可以把這簡單步驟弄得更快罷了XD
當然也感謝回覆的前輩們
附帶一提,秒數是用i5 520m跑的,要是用lab舊電腦跑可能就完了,小弟功力尚淺阿阿Orz
※ 編輯: wayne0411 來自: 114.32.238.115 (06/12 01:20)
推
06/12 01:39, , 30F
06/12 01:39, 30F
推
06/12 11:47, , 31F
06/12 11:47, 31F
→
06/12 11:48, , 32F
06/12 11:48, 32F
→
06/12 15:50, , 33F
06/12 15:50, 33F
推
06/12 16:42, , 34F
06/12 16:42, 34F
→
06/12 16:43, , 35F
06/12 16:43, 35F
→
06/12 16:43, , 36F
06/12 16:43, 36F
→
06/12 16:44, , 37F
06/12 16:44, 37F
下面EdisonX有說了,vector1=vector2這是我試到目前最快的
也許vector本身就有優化吧?!
→
06/12 17:39, , 38F
06/12 17:39, 38F
→
06/12 17:40, , 39F
06/12 17:40, 39F
→
06/12 17:42, , 40F
06/12 17:42, 40F
→
06/12 18:07, , 41F
06/12 18:07, 41F
→
06/12 18:07, , 42F
06/12 18:07, 42F
→
06/12 18:08, , 43F
06/12 18:08, 43F
→
06/12 18:09, , 44F
06/12 18:09, 44F
請問前輩何解?! 小弟的觀念disparity是整數型態的
宣成double,空間跟速度都會受到影響吧?
推
06/13 23:09, , 45F
06/13 23:09, 45F
→
06/13 23:10, , 46F
06/13 23:10, 46F
真的不算慢,只是struct裡面的資料型態會"嚴重"影響速度
資料範圍越廣的型態,影響速度越多
※ 編輯: wayne0411 來自: 114.45.175.234 (06/14 20:46)
→
06/14 23:28, , 47F
06/14 23:28, 47F
→
06/14 23:29, , 48F
06/14 23:29, 48F
→
06/21 21:18, , 49F
06/21 21:18, 49F