資源簡介
這個是BING算法純檢測部分的實現,訓練好的模型已經在里面了。只需要修改你自己圖片的路徑就可以使用。 工程上使用大概20FPS。
代碼片段和文件信息
#include?“stdafx.h“
#include?“FilterBING.h“
//#include?“CmShow.h“
void?FilterBING::update(CMat?&w1f){
CV_Assert(w1f.cols?*?w1f.rows?==?D?&&?w1f.type()?==?CV_32F?&&?w1f.isContinuous());
float?b[D]?residuals[D];
memcpy(residuals?w1f.data?sizeof(float)*D);
for?(int?i?=?0;?i? float?avg?=?0;
for?(int?j?=?0;?j? b[j]?=?residuals[j]?>=?0.0f???1.0f?:?-1.0f;
avg?+=?residuals[j]?*?b[j];
}
avg?/=?D;
_coeffs1[i]?=?avg?_coeffs2[i]?=?avg*2?_coeffs4[i]?=?avg*4?_coeffs8[i]?=?avg*8;
for?(int?j?=?0;?j? residuals[j]?-=?avg*b[j];
UINT64?tig?=?0;
for?(int?j?=?0;?j? tig?=?(tig?<1)?|?(b[j]?>?0???1?:?0);
_bTIGs[i]?=?tig;
}
}
void?FilterBING::reconstruct(Mat?&w1f){
w1f?=?Mat::zeros(8?8?CV_32F);
float?*weight?=?(float*)w1f.data;
for?(int?i?=?0;?i? UINT64?tig?=?_bTIGs[i];
for?(int?j?=?0;?j? weight[j]?+=?_coeffs1[i]?*?(((tig?>>?(63-j))?&?1)???1?:?-1);
}
}
//?For?a?W?by?H?gradient?magnitude?map?find?a?W-7?by?H-7?CV_32F?matching?score?map
//?Please?refer?to?my?paper?for?definition?of?the?variables?used?in?this?function
Mat?FilterBING::matchTemplate(const?Mat?&mag1u){
const?int?H?=?mag1u.rows?W?=?mag1u.cols;
const?Size?sz(W+1?H+1);?//?Expand?original?size?to?avoid?dealing?with?boundary?conditions
Mat_?Tig1?=?Mat_::zeros(sz)?Tig2?=?Mat_::zeros(sz);
Mat_?Tig4?=?Mat_::zeros(sz)?Tig8?=?Mat_::zeros(sz);
Mat_?Row1?=?Mat_::zeros(sz)?Row2?=?Mat_::zeros(sz);
Mat_?Row4?=?Mat_::zeros(sz)?Row8?=?Mat_::zeros(sz);
Mat_?scores(sz);
for(int?y?=?1;?y?<=?H;?y++){?
const?byte*?G?=?mag1u.ptr(y-1);
INT64*?T1?=?Tig1.ptr(y);?//?Binary?TIG?of?current?row
INT64*?T2?=?Tig2.ptr(y);
INT64*?T4?=?Tig4.ptr(y);
INT64*?T8?=?Tig8.ptr(y);
INT64*?Tu1?=?Tig1.ptr(y-1);?//?Binary?TIG?of?upper?row
INT64*?Tu2?=?Tig2.ptr(y-1);
INT64*?Tu4?=?Tig4.ptr(y-1);
INT64*?Tu8?=?Tig8.ptr(y-1);
byte*?R1?=?Row1.ptr(y);
byte*?R2?=?Row2.ptr(y);
byte*?R4?=?Row4.ptr(y);
byte*?R8?=?Row8.ptr(y);
float?*s?=?scores.ptr(y);
for?(int?x?=?1;?x?<=?W;?x++)?{
byte?g?=?G[x-1];
R1[x]?=?(R1[x-1]?<1)?|?((g?>>?4)?&?1);
R2[x]?=?(R2[x-1]?<1)?|?((g?>>?5)?&?1);
R4[x]?=?(R4[x-1]?<1)?|?((g?>>?6)?&?1);
R8[x]?=?(R8[x-1]?<1)?|?((g?>>?7)?&?1);
T1[x]?=?(Tu1[x]?<8)?|?R1[x];
T2[x]?=?(Tu2[x]?<8)?|?R2[x];
T4[x]?=?(Tu4[x]?<8)?|?R4[x];
T8[x]?=?(Tu8[x]?<8)?|?R8[x];
s[x]?=?dot(T1[x]?T2[x]?T4[x]?T8[x]);
}
}
Mat?matchCost1f;
scores(Rect(8?8?W-7?H-7)).copyTo(matchCost1f);
return?matchCost1f;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6239??2015-12-16?16:30??Bingob
?????文件???????2796??2015-12-19?11:14??Bingob
?????文件???????1966??2014-04-11?18:28??Bingob
?????文件????????998??2015-12-19?10:45??Bingob
?????文件???????9430??2015-12-19?11:20??Bingob
?????文件???????3287??2015-12-19?11:16??Bingob
?????文件???????5643??2015-12-19?10:55??Bingob
?????文件???????1793??2015-12-19?10:55??Bingob
?????文件????????165??2015-11-18?15:10??Bingob
?????文件????????129??2015-12-15?15:25??Bingob
?????文件????????273??2015-12-15?15:25??Bingob
?????文件????????241??2015-12-15?15:25??Bingob
?????文件???????1028??2015-12-15?14:30??Bingob
?????文件???????2733??2015-12-19?11:18??Bingob
?????文件???????2561??2015-12-19?11:20??Bingob
?????文件???70713344??2015-12-19?11:28??Bingob
?????文件????????952??2015-12-16?16:08??Bingob
????..A..H.?????70656??2015-12-19?11:28??Bingob
?????目錄??????????0??2015-12-19?11:29??Bingob
?????目錄??????????0??2015-12-19?11:29??Bingob
?????目錄??????????0??2015-12-19?11:20??Bingob
?????目錄??????????0??2015-12-19?11:29??Bingob
?????目錄??????????0??2015-12-19?11:28??Bingob
-----------?---------??----------?-----??----
?????????????70824234????????????????????23
評論
共有 條評論