資源簡介
手寫簽名采集識別系統(tǒng),可以采集簽名,并進(jìn)行簽名識別,使用DTW算法

代碼片段和文件信息
//?SignMatch.cpp?:?Defines?the?entry?point?for?the?DLL?application.
//
#include?
#include?“struct.h“
#include?“SignData.h“
using?namespace?std;
#ifndef?LIB_H
#define?LIB_H
//extern?“C“?int?__declspec(dllexport)add(int?x?int?y);
//extern?“C“?MATCHDIS?__declspec(dllexport)MatchDTW(CSignData?&data1CSignData?&data2int?nType);
extern?“C“?MATCHDIS?__declspec(dllexport)MatchDTW(string?str1string?str2int?nTypeint?n);
//extern?“C“?void?__declspec(dllexport)MatchByFile(char?*?str1char?*?str2MATCHDIS&?sc?);
//extern?“C“?void?__declspec(dllexport)MatchByFile(string?str1string?str2MATCHDIS?&?sc?);
#endif
#define?DTWMAXNUM?2000
#define?MAX(ab)?((a)>(b)?(a):(b))
#define?MIN(ab)?((a)<(b)?(a):(b))
#define?ABS(a)?((a)>0?(a):(-(a)))
#define?DTWVERYBIG?100000000.0
double?distance1[DTWMAXNUM][DTWMAXNUM];?/*保存距離*/
double?dtwpath[DTWMAXNUM][DTWMAXNUM];?/*保存路徑*/
//計(jì)算單一方向距離
double?DTWDistanceFun(double?*Aint?Idouble?*Bint?Jint?r)
{
int?ij;
double?dist;
int?istartimax;
int?r2=r+ABS(I-J);/*匹配距離*/
double?g1g2g3;
int?pathsig=1;/*路徑的標(biāo)志*/
/*檢查參數(shù)的有效性*/
if(I>DTWMAXNUM||J>DTWMAXNUM){
//printf(“Too?big?number\n“);
return?-1.0;
}
/*進(jìn)行一些必要的初始化*/
for(i=0;i for(j=0;j dtwpath[i][j]=0;
distance1[i][j]=DTWVERYBIG;
}
}
/*動態(tài)規(guī)劃求最小距離*/
/*這里我采用的路徑是?-------
??????????????????????????.?|
????????????????????????.???|
??????????????????????.?????|
????????????????????.???????|
?*/
distance1[0][0]=(double)2*ABS(A[0]-B[0]);
for(i=1;i<=r2;i++){
distance1[i][0]=distance1[i-1][0]+ABS(A[i]-B[0]);
}
for(j=1;j<=r2;j++){
distance1[0][j]=distance1[0][j-1]+ABS(A[0]-B[j]);
}
for(j=1;j istart=j-r2;
if(j<=r2)
istart=1;
imax=j+r2;
if(imax>=I)
imax=I-1;
for(i=istart;i<=imax;i++){
g1=distance1[i-1][j]+ABS(A[i]-B[j]);
g2=distance1[i-1][j-1]+2*ABS(A[i]-B[j]);
g3=distance1[i][j-1]+ABS(A[i]-B[j]);
g2=MIN(g1g2);
g3=MIN(g2g3);
distance1[i][j]=g3;
}
}
dist=distance1[I-1][J-1]*10/((double)(I+J));
return?dist;
}
//整體距離
double?GetMin(double?**dint?n?int?m){???//DTW中通過d得到g
??double?**g?=?new?double*[n];
?double?min=0getmin;
?for(int?i=0;i g[i]=new?double[m];
for(int?j=0;j if(i==0||j==0){
if(i==0&&j==0){
g[i][j]=2*d[i][j];
}
if(i==0&&j!=0){
g[i][j]=d[i][j]+g[i][j-1];
}
if(i!=0&&j==0){
g[i][j]=d[i][j]+g[i-1][j];
}
// System.out.println(“g[“+i+“]“+“[“+j+“]=“+g[i][j]);
}else{
if((g[i][j-1]+d[i][j])<(g[i-1][j-1]+2*d[i][j])){
min=g[i][j-1]+d[i][j];
}else{
min=g[i-1][j-1]+2*d[i][j];
}
if(min<(g[i-1][j]+d[i][j])){
g[i][j]=min;
// System.out.println(“g[“+i+“]“+“[“+j+“]=“+g[i][j]);
}else{
g[i][j]=g[i-1][j]+d[i][j];
// System.out.println(“g[“+i+“]“+“[“+j+“]=“+g[i][j]);
}
}
}
}?
// loop+=strokeSum[k];
// }
?getmin=(g[n-1][m-1])/(n+m);
?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????14464??2014-01-13?15:08??MatchDTW\Debug\BuildLog.htm
?????文件???????2486??2014-04-14?20:38??MatchDTW\Debug\MatchDTW.Build.CppClean.log
?????文件????????441??2014-04-14?20:38??MatchDTW\Debug\MatchDTW.log
?????文件???????4647??2014-04-14?19:48??MatchDTW\MatchDtw.cpp
?????文件???????4332??2014-01-13?15:08??MatchDTW\MatchDTW.vcproj
?????文件???????1401??2014-01-13?15:24??MatchDTW\MatchDTW.vcproj.PC-201210172121.Administrator.user
?????文件???????5480??2014-02-17?16:39??MatchDTW\MatchDTW.vcxproj
?????文件???????1412??2014-02-17?16:39??MatchDTW\MatchDTW.vcxproj.filters
?????文件????????143??2014-02-17?16:39??MatchDTW\MatchDTW.vcxproj.user
?????文件???????2358??2014-04-03?15:50??MatchDTW\Release\cl.command.1.tlog
?????文件??????26456??2014-04-03?15:50??MatchDTW\Release\CL.read.1.tlog
?????文件???????1608??2014-04-03?15:50??MatchDTW\Release\CL.write.1.tlog
?????文件???????1826??2014-04-03?15:50??MatchDTW\Release\li
?????文件???????3102??2014-04-03?15:50??MatchDTW\Release\li
?????文件????????896??2014-04-03?15:50??MatchDTW\Release\li
?????文件???????1422??2014-04-03?15:50??MatchDTW\Release\MatchDTW.Build.CppClean.log
?????文件????????381??2014-04-03?15:50??MatchDTW\Release\MatchDTW.dll.intermediate.manifest
?????文件?????????77??2014-04-03?15:50??MatchDTW\Release\MatchDTW.lastbuildstate
?????文件???????2795??2014-04-03?15:50??MatchDTW\Release\MatchDTW.log
?????文件?????673886??2014-04-03?15:50??MatchDTW\Release\MatchDtw.obj
?????文件????????349??2014-04-03?15:50??MatchDTW\Release\MatchDTW.write.1.tlog
?????文件????????514??2014-04-03?15:50??MatchDTW\Release\mt.command.1.tlog
?????文件????????792??2014-04-03?15:50??MatchDTW\Release\mt.read.1.tlog
?????文件????????332??2014-04-03?15:50??MatchDTW\Release\mt.write.1.tlog
?????文件????1025338??2014-04-03?15:50??MatchDTW\Release\SignData.obj
?????文件??????30899??2014-04-03?15:50??MatchDTW\Release\StdAfx.obj
?????文件?????290816??2014-04-03?15:50??MatchDTW\Release\vc100.pdb
?????文件??????47330??2014-03-01?19:49??MatchDTW\SignData.cpp
?????文件???????3117??2014-01-13?14:09??MatchDTW\SignData.h
?????文件????????296??2013-08-26?14:16??MatchDTW\StdAfx.cpp
............此處省略8個文件信息
- 上一篇:s7-300變頻恒壓供水
- 下一篇:哈工大考研通信復(fù)試面試問題匯總
評論
共有 條評論