DennisLiu-elogic
DennisLiu-elogic
你好,我下載了cuda_icp資料夾,放到MIPP同層 專案多設定一個include目錄(cuda_icp) (不使用CMake) 編譯時會找不到Eigen相關的目錄,這個是要額外下載的嗎? --16:10-- 將cuda_icp的.h .cpp全部加入專案內,include Eigen資料夾 編譯後的錯誤訊息都跟OpenMP相關 1. 'declare': 需要 OpenMP 指示詞名稱 2. 'reducer': 'reduction' 子句中的變數必須有純量算術類型 3. 'pcd_iter': OpenMP 'for' 陳述式中的索引變數必須具有帶正負號的整數類資料類型
@meiqua 感謝大神快速回復! 另外有些想法想與你討論,昨天我看了工廠的機台用Cognex的形狀匹配,發現Cognex訓練模板時會將整個輪廓畫出來,與使用Canny時非常相似 (我猜選用的特徵點也幾乎遍布畫出來的輪廓,數量多),是否在選定特徵點的時候參考Canny的算法比較好? 我知道雙閥值已經有Canny的味道,但是現在這個專案就算把feature number調高也沒辦法找到那麼多特徵點
@huynhbaobk  set O2 here  set OpenMP here
但是要這樣做的話,計算量挺大的 我在update () 中呼叫quantizedOrientations ( )時將magnitude, sobel_ag存出 每一角度步長旋轉magnitude, sobel_ag,並且sobel_ag所有元素要加上角度值 再根據旋轉後的feature.x feature.y ,getLabel () 是否有比較好的方法?或是不用操作這麼多東西
大神的思路跳太快了,小弟難以跟上Orz 能否給個引導 1. feature多加一個變量紀錄角度-->OK 2. 我預計是在detector->addTemplate ()這個函數呼叫第一次的時候旋轉0度的feature,那這個float變量在何時要作用呢? 我是在遍歷金字塔層數的時候加入改動 for (int l = 0; l < pyramid_levels; ++l) { .... .... //已經做完0度的樣版 for (float fAngle = 1.0f ; fAngle
這個意思我懂 但是角度量化是在ColorGradientPyramid的contructor ( )以及 pyrDown ( )時做的 這兩個時機變量tp還沒傳入qp呀 還是時機是在qp->extractTemplate ( )內的selectScatteredFeatures ( )? 這時候角度已經量化為0-7
感謝回復! 但還是有些不解 1. sobel_ag記下來-->遍歷角度時要旋轉它 2.https://github.com/meiqua/shape_based_matching/blob/3d001ba19040fe031804d3b05c25802837c34238/line2Dup.cpp#L470把量化前的角度也加上(Feature结构体多加个float) -->這時angle已經是uchar型態了,而且值會是1, 2, 4...128,為何要用float? 還是你的意思是,將1, 2, 4, 8...128轉換為0-360,再加上旋轉後的sobel_ag.at (y, x),接著量化?
我好像懂了 1. 變量m_sobel_ag_copy記住sobel_ag 2. candidates.push_back(Candidate(c, r, getLabel(angle.at(r, c)), score)); 這裡m_fAngle = m_sobel_ag_copy.at (r, c) 記住特徵點的原始角度 這個float變量應該是設在Candidate結構才對? 因為selectScatteredFeatures ( )時feature會clear 3. m_sobel_ag_copy.at(y, x) +m_fAngle得到特徵點旋轉後的角度,再呼叫hysteresisGradient (),接著getLabel ( ) 那存uchar有何用處呢?
大哥能否看下,我寫好但getLabel 時會進到case defult 改動如下 : 1. 變量m_matSobel_ag_copy記住sobel_ag  2. Feature中的變量m_fAngle記住量化前的角度  3. addTemplate ( )調整   流程為 : 旋轉0度的特徵點、magnitude、sobel_ag sobel_ag_rotate加上量化前的角度 hysteresisGradient () ** 但這樣getLabel ()時會進到default
感謝回覆! 我改成 float fNewAngle = tp[0][l].features[i].m_fAngle(量化前) + fAngle (for迴圈遍歷的角度1-360); 那這個fNewAngle(範圍0-360),不使用hysteresisGradient () 如何量化為0-7?