亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? matching.c

?? 基于C開發的指紋識別源程序.rar
?? C
字號:
/*############################################################################# * 文件名:matching.c * 功能:  實現了指紋匹配算法 * modified by  PRTsinghua@hotmail.com#############################################################################*/ #include <math.h>#include <string.h>#include <stdlib.h>#include <stdio.h>#include <time.h> #include "matching.h" #define REF_X (FvsInt_t) 0#define REF_Y (FvsInt_t) 0#define REF_THETA (FvsFloat_t) 0.0#define PI (double)3.14285714285714285714285714285714typedef struct Fvs_PolarMinutia_t{    /* r位置 */    FvsFloat_t    r;    /* e位置 */    FvsFloat_t    e;    /* 角度  */    FvsFloat_t    angle; } Fvs_PolarMinutia_t; FvsError_t Insertion_Sort(Fvs_PolarMinutia_t*, FvsInt_t) ;FvsError_t fInsertion_Sort(FvsFloat_t* v, FvsInt_t v_length); Fvs_PolarMinutia_t p_polar_input[100];Fvs_PolarMinutia_t p_polar_tmplt[100]; Fvs_PolarMinutia_t s_polar_input[100];Fvs_PolarMinutia_t s_polar_tmplt[100]; /******************************************************************************  * 功能:匹配兩個指紋  * 參數:image1      指紋圖像1  *       image2      指紋圖像2  *       pgoodness   匹配度,越高越好  * 返回:錯誤編號******************************************************************************/FvsError_t MatchingCompareImages(    const FvsImage_t image1,    const FvsImage_t image2,    FvsInt_t* pgoodness){    /* ?。≡撍惴ㄉ形磳崿F,讀者可以自己試著實現!! */        return FvsOK;} # define ALPHA (float) 1.0# define BETA (float) 2.0# define GAMMA (float) 0.1# define OHM (float) (200.0 * (ALPHA + BETA + GAMMA))# define ETA (float) 0.5 # define DEL_LO_M_N (float) -8.0# define DEL_HI_M_N (float) +8.0# define SI_LO_M_N (float) -7.5# define SI_HI_M_N (float) +7.5 # define DEL_REF (float) (DEL_HI_M_N - DEL_LO_M_N)# define SI_REF  (float) (SI_HI_M_N  - SI_LO_M_N )# define EPS_REF (int) 30# define EDIT_DIST_THRESHOLD (int) 10 /******************************************************************************  * 功能:匹配指紋細節點  * 參數:minutia1      細節點集合1  *       minutia2      細節點集合2  *       pgoodness   匹配度,越高越好  * 返回:錯誤編號******************************************************************************/FvsError_t MatchingCompareMinutiaSets (    const FvsMinutiaSet_t set1,    const FvsMinutiaSet_t set2,     FvsInt_t* pgoodness ){    FvsInt_t i = 0, n = 0, m = 0;    FvsInt_t ix, tx;    FvsInt_t iy, ty;    FvsFloat_t itheta, ttheta;    FvsFloat_t ir, tr;    FvsFloat_t ie, te;    FvsFloat_t ftmp1, ftmp2, ftmp3 = 0.0;    FvsInt_t ltmp1 = 0, ltmp2 = 0, ltmp3 = 0;    FvsFloat_t fatmp1[50];    FvsFloat_t fatmp2[50];    FvsFloat_t edit_dist[100][100];     // 距離計算之用    FvsFloat_t diff_r, diff_e, diff_theta, ftmp;    FvsFloat_t window_mn, a;    FvsFloat_t edit_dist_m1_n;    FvsFloat_t edit_dist_m_n1;    FvsFloat_t edit_dist_m1_n1;    FvsFloat_t edit_dist_m_n = (float) 0.0;    int window_flag;    int nb_pair;    int nb_minutiae;    float Mpq;     FvsMinutia_t* input_minutia = MinutiaSetGetBuffer(set1);    FvsInt_t nb_input_minutia   = MinutiaSetGetCount(set1);     FvsMinutia_t* tmplt_minutia = MinutiaSetGetBuffer(set2);    FvsInt_t nb_tmplt_minutia   = MinutiaSetGetCount(set2);     if (input_minutia==NULL)        return FvsMemory;     if (tmplt_minutia==NULL)        return FvsMemory;     printf("\nNumber of minutiae in the input image is = %d", nb_input_minutia);    printf("\nNumber of minutiae in the tmplt image is = %d", nb_tmplt_minutia);      for (n = 0; n < nb_input_minutia; n++)     {         ix = (FvsInt_t)input_minutia[n].x;        iy = (FvsInt_t)input_minutia[n].y;        itheta = (FvsFloat_t) input_minutia[n].angle * (180 / PI);                ftmp1 = (FvsFloat_t) (ix - REF_X) * (ix - REF_X);        ftmp2 = (FvsFloat_t) (iy - REF_Y) * (iy - REF_Y);        p_polar_input[n].r = sqrt (ftmp1 + ftmp2);         ftmp1 = (FvsFloat_t) (ix - REF_X);        ftmp2 = (FvsFloat_t) (iy - REF_Y);         p_polar_input[n].e = (FvsFloat_t) atan (ftmp2 / ftmp1);         p_polar_input[n].angle = (itheta - REF_THETA);    }     for (n = 0; n < nb_tmplt_minutia; n++)     {         tx = (FvsInt_t)tmplt_minutia[n].x;        ty = (FvsInt_t)tmplt_minutia[n].y;        ttheta = (FvsFloat_t) tmplt_minutia[n].angle * (180 / PI);                ftmp1 = (FvsFloat_t) (tx - REF_X) * (tx - REF_X);        ftmp2 = (FvsFloat_t) (ty - REF_Y) * (ty - REF_Y);        p_polar_tmplt[n].r = sqrt (ftmp1 + ftmp2);         ftmp1 = (FvsFloat_t) (tx - REF_X);        ftmp2 = (FvsFloat_t) (ty - REF_Y);         p_polar_tmplt[n].e = (FvsFloat_t) atan (ftmp2 / ftmp1);         p_polar_tmplt[n].angle = (ttheta - REF_THETA);     }     /* 升序排列細節點 */     for (n = 0; n < nb_input_minutia; n++)     {        s_polar_input[n].r = p_polar_input[n].r;        s_polar_input[n].e = p_polar_input[n].e;        s_polar_input[n].angle = p_polar_input[n].angle;        fatmp1[n] = p_polar_input[n].angle;        fatmp2[n] = fatmp1[n];    }        Insertion_Sort (&s_polar_input[0], nb_input_minutia);    for (n = 0; n < nb_input_minutia; n++) {         s_polar_tmplt[n].r = p_polar_tmplt[n].r;        s_polar_tmplt[n].e = p_polar_tmplt[n].e;        s_polar_tmplt[n].angle = p_polar_tmplt[n].angle;        fatmp1[n] = p_polar_tmplt[n].angle;        fatmp2[n] = fatmp1[n];    }        Insertion_Sort (&p_polar_tmplt[0], nb_tmplt_minutia);     //  如果 m = 0 或 n = 0,則edit ditance = 0     for (m = 0; m < nb_tmplt_minutia; m++)        edit_dist[m][0] = 0.0;     for (n = 0; n < nb_input_minutia; n++)        edit_dist[0][n] = 0.0;     for (m = 1; m <= nb_tmplt_minutia; m++) {         tr = s_polar_tmplt[m].r;        te = s_polar_tmplt[m].e;        ttheta = s_polar_tmplt[m].angle;         for (n = 1; n <= nb_input_minutia; n++) {             ir = s_polar_tmplt[n].r;            ie = s_polar_tmplt[n].e;            itheta = s_polar_tmplt[n].angle;             // 計算窗口函數 w(m,n)                // 1. 計算差分 r             diff_r = tr - ir;             // 2. 計算差分 e             ftmp = te - ie;            ftmp += 360.0;             // a = (ie - te + 360) mod 360             if (ftmp > 360.0) {                 a = ftmp - 360.0;             } else {                 a = 360.0 - ftmp;            }                             if (a < 180.0) {                 diff_e = a;             } else {                 diff_e = a - 180.0;            }                // 3. 計算差分 theta             ftmp = ttheta - itheta;            ftmp += 360.0;             // a = (itheta - ttheta + 360) mod 360                        if (ftmp > 360.0) {                 a = ftmp - 360.0;             } else {                 a = 360.0 - ftmp;            }                             if (a < 180.0) {                 diff_theta = a;             } else {                 diff_theta = a - 180.0;            }             // 計算窗口函數 w(m,n)             window_flag = 0;                        if((diff_r < DEL_REF) | (diff_e < SI_REF) |\                (diff_theta < EPS_REF)) {                 window_flag = 1;             }             if (window_flag == 1) {                 window_mn = (ALPHA * diff_r);                window_mn += (BETA * diff_e);                window_mn += (GAMMA * diff_theta);  // w(m,n)             } else {                 window_mn = OHM;                    // w(m,n)            }             //=========================            // 計算 edit distance:            //=========================            // edit_dist[m][n] = ?            //=========================             edit_dist_m1_n  = edit_dist[m-1][n+0] + OHM;            edit_dist_m_n1  = edit_dist[m+0][n-1] + OHM;            edit_dist_m1_n1 = edit_dist[m-1][n-1] + window_mn;             edit_dist_m_n = 0.0;                        if (edit_dist_m1_n < edit_dist_m_n1)                edit_dist_m_n = edit_dist_m1_n;            else                edit_dist_m_n = edit_dist_m_n1;             if (edit_dist_m1_n1 < edit_dist_m_n)                edit_dist_m_n = edit_dist_m1_n1;             edit_dist[m][n] = edit_dist_m_n;         }    }     nb_pair = 0;     for (m = 1; m <= nb_tmplt_minutia; m++) {         if (edit_dist[m][m] < (float) EDIT_DIST_THRESHOLD)            nb_pair++;     }     nb_minutiae = nb_tmplt_minutia;     if (nb_input_minutia < nb_tmplt_minutia)        nb_minutiae = nb_input_minutia;     Mpq = ((float)100.0 * (float)nb_pair) / (float)nb_minutiae;     if (Mpq > 70.0)// 超過70%的細節點匹配        printf ("\nTemplated matched with input");    else        printf ("\nTemplated not matched with input");     printf ("\nmatching application !!!\n\n\n\n");        return FvsOK;}/* 插入排序函數 */ FvsError_t Insertion_Sort (    Fvs_PolarMinutia_t* v,     FvsInt_t v_length) {    FvsFloat_t item_to_insert1;     FvsFloat_t item_to_insert2;     FvsFloat_t item_to_insert3;     int still_looking, j, k;         for (k = 1; k < v_length; ++k)     {        item_to_insert1 = v[k].angle;        item_to_insert2 = v[k].r;        item_to_insert3 = v[k].e;         j = k - 1;         still_looking = 1;                 while ((j >= 0) && (still_looking==1))  {             if (item_to_insert1 < v[j].angle) {                 v[j + 1].angle = v[j].angle;                 v[j + 1].r = v[j].r;                 v[j + 1].e = v[j].e;                  v[j].angle = item_to_insert1;                v[j].r = item_to_insert2;                v[j].e = item_to_insert3;                  --j;              } else  {                 still_looking = 0;                v[j + 1].angle = item_to_insert1;                 v[j + 1].r = item_to_insert2;                 v[j + 1].e = item_to_insert3;            }        }    }     return FvsOK;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人先锋电影| 99久久综合99久久综合网站| 激情av综合网| 色就色 综合激情| 久久伊人中文字幕| 亚洲电影中文字幕在线观看| 国产乱国产乱300精品| 欧美午夜不卡在线观看免费| 久久久99免费| 久久精品二区亚洲w码| 欧美综合天天夜夜久久| 国产日韩精品一区二区三区在线| 亚洲国产成人91porn| caoporn国产一区二区| 亚洲精品一线二线三线| 亚洲国产成人91porn| 亚洲精品一区二区三区在线观看 | 日本一区二区三区国色天香| 亚洲1区2区3区4区| 色妞www精品视频| 中文字幕免费在线观看视频一区| 久久99国内精品| 91精品国产欧美一区二区| 亚洲国产日日夜夜| 在线观看日韩毛片| 亚洲图片另类小说| 91原创在线视频| 国产精品少妇自拍| 成人午夜av电影| 国产亚洲综合av| 国产成人自拍高清视频在线免费播放| 日韩三级在线观看| 韩国女主播成人在线| 欧美电视剧免费观看| 日本成人超碰在线观看| 91精品国产高清一区二区三区| 五月婷婷久久综合| 欧美精品久久久久久久多人混战 | 成a人片国产精品| 中文字幕免费一区| 99热国产精品| 亚洲视频免费在线观看| 色吧成人激情小说| 亚洲午夜久久久久久久久久久 | 国产一区二区不卡| 久久精子c满五个校花| 国产成人综合网| 国产精品久久久久天堂| 91丨九色丨黑人外教| 一区二区三区色| 欧美久久久一区| 久久成人av少妇免费| 久久精品视频在线看| 成人av综合一区| 亚洲精品视频一区二区| 欧美日韩国产乱码电影| 日韩国产欧美三级| 久久色.com| 99精品一区二区三区| 亚洲成人av在线电影| 亚洲精品一区二区在线观看| av高清不卡在线| 午夜电影网亚洲视频| 精品99999| 色综合激情久久| 免费在线观看一区二区三区| 国产日韩av一区二区| 色噜噜偷拍精品综合在线| 免费人成网站在线观看欧美高清| 日韩精彩视频在线观看| 欧美成人r级一区二区三区| 国产91丝袜在线播放| 亚洲国产精品视频| 久久久亚洲午夜电影| 91激情在线视频| 国产在线视频一区二区| 一区二区国产盗摄色噜噜| 精品国产污污免费网站入口 | 亚洲欧美欧美一区二区三区| 6080午夜不卡| 成人性生交大片免费看中文 | 一区二区国产视频| 久久精品视频一区二区三区| 精品污污网站免费看| 成人性视频网站| 麻豆91在线播放免费| 一区二区欧美视频| 中文字幕第一区综合| 日韩一区二区精品葵司在线| 91黄色激情网站| 国产成人精品亚洲午夜麻豆| 免费xxxx性欧美18vr| 一区二区三区四区乱视频| 国产欧美日韩另类一区| 日韩欧美一卡二卡| 欧美色视频在线观看| 国产成人av电影在线观看| 美国十次了思思久久精品导航| 综合久久给合久久狠狠狠97色| 久久久午夜精品理论片中文字幕| 4438亚洲最大| 91.xcao| 欧洲中文字幕精品| 色婷婷一区二区| www.欧美色图| 国产99精品视频| 国产在线播放一区二区三区| 蜜臀精品久久久久久蜜臀 | 国产亚洲欧洲997久久综合| 欧美精品一二三| 欧美视频你懂的| 色呦呦一区二区三区| aaa国产一区| 91天堂素人约啪| 91性感美女视频| 91麻豆精品视频| 91在线视频官网| 一本大道久久a久久综合| 99精品久久免费看蜜臀剧情介绍| 成人精品视频.| 成人免费观看av| av影院午夜一区| 99r国产精品| 欧美午夜精品久久久久久孕妇| 在线看国产日韩| 欧美日韩夫妻久久| 日韩精品专区在线影院观看| 日韩精品一区二区在线观看| 欧美成人bangbros| 国产色综合一区| 亚洲三级免费电影| 亚洲小少妇裸体bbw| 视频在线观看91| 久久99久国产精品黄毛片色诱| 精品一区二区三区影院在线午夜 | 亚洲mv大片欧洲mv大片精品| 午夜精品一区二区三区三上悠亚 | 国产a视频精品免费观看| 成人毛片视频在线观看| 一本大道久久a久久精品综合| 欧美视频在线一区二区三区| 欧美一级夜夜爽| 久久午夜老司机| 亚洲免费在线视频一区 二区| 五月综合激情网| 国产福利91精品一区二区三区| 成人免费观看av| 欧美三级乱人伦电影| 精品国产一区二区三区av性色| 国产免费观看久久| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美一级一级性生活免费录像| 久久嫩草精品久久久精品| 亚洲欧美区自拍先锋| 日韩精品视频网| 国产**成人网毛片九色| 欧美三级在线看| 久久九九久久九九| 亚洲高清三级视频| 国产成人免费在线| 精品视频全国免费看| 国产日韩欧美电影| 天天亚洲美女在线视频| 成人综合婷婷国产精品久久蜜臀| 欧美视频在线播放| 国产欧美日韩在线| 日韩国产欧美在线视频| 91在线观看一区二区| 久久综合久久久久88| 亚洲综合久久av| 成人性生交大片免费看中文 | 在线观看亚洲精品视频| 欧美精品一区二区三区蜜桃| 亚洲一区二区欧美| 丁香五精品蜜臀久久久久99网站 | 亚洲精品一区二区三区影院| 亚洲激情男女视频| 国产v日产∨综合v精品视频| 日韩午夜精品视频| 亚洲一区二区三区精品在线| 成人一级片网址| 国产日韩欧美麻豆| 久久国产精品99久久久久久老狼| 欧美日韩国产电影| 亚洲精品国产无套在线观| 丰满少妇久久久久久久| 久久久久国产精品厨房| 免费久久精品视频| 欧美猛男超大videosgay| 亚洲精品乱码久久久久久黑人 | 欧美国产禁国产网站cc| 久久超碰97中文字幕| 在线电影一区二区三区| 午夜精品久久久久久久99樱桃| 91黄视频在线| 亚洲午夜免费视频| 欧美精品日日鲁夜夜添| 天天综合天天综合色| 欧美一区二区三区视频免费播放| 天堂在线一区二区|