• 大小: 437KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: 其他
  • 标签: 签名  识别  C#  DTW  

资源简介

手写签名采集识别系统,可以采集签名,并进行签名识别,使用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]; /*保存路径*/

//计算单一方向距离
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;/*路径的标志*/

/*检查参数的有效性*/
if(I>DTWMAXNUM||J>DTWMAXNUM){
//printf(“Too big number\n“);
return -1.0;
}

/*进行一些必要的初始化*/
for(i=0;i for(j=0;j dtwpath[i][j]=0;
distance1[i][j]=DTWVERYBIG;
}
}

/*动态规划求最小距离*/
/*这里我采用的路径是 -------
                          . |
                        .   |
                      .     |
                    .       |
 */
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\link.command.1.tlog

     文件       3102  2014-04-03 15:50  MatchDTW\Release\link.read.1.tlog

     文件        896  2014-04-03 15:50  MatchDTW\Release\link.write.1.tlog

     文件       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个文件信息

评论

共有 条评论