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

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

?? imagemanip.c

?? 指紋識別 C代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
        FvsInt_t peak_pos[BLOCK_L];		/* 頂點			*/        FvsInt_t peak_cnt;				/* 頂點數目		*/        FvsFloat_t peak_freq;			/* 頂點頻率		*/        FvsFloat_t Xsig[BLOCK_L];		/* x signature	*/        FvsFloat_t pmin, pmax;        memset(out,  0, size);        memset(freq, 0, size);        /* 1 - 圖像分塊  BLOCK_W x BLOCK_W - (16 x 16) */        for (y = BLOCK_L2; y < h-BLOCK_L2; y++)        for (x = BLOCK_L2; x < w-BLOCK_L2; x++)        {            /* 2 - 脊線方向的窗口 l x w (32 x 16) */            dir = orientation[(x+BLOCK_W2) + (y+BLOCK_W2)*w];            cosdir = -sin(dir);             sindir = cos(dir);            /* 3 - 計算 x-signature X[0], X[1], ... X[l-1] */            for (k = 0; k < BLOCK_L; k++)            {                Xsig[k] = 0.0;                for (d = 0; d < BLOCK_W; d++)                {                    u = (FvsInt_t)(x + (d-BLOCK_W2)*cosdir + (k-BLOCK_L2)*sindir);                    v = (FvsInt_t)(y + (d-BLOCK_W2)*sindir - (k-BLOCK_L2)*cosdir);                    /* clipping */                    if (u<0) u = 0; else if (u>w-1) u = w-1;                    if (v<0) v = 0; else if (v>h-1) v = h-1;                    Xsig[k] += p[u + (v*pitchi)];                }                Xsig[k] /= BLOCK_W;            }            /* 計算 T(i,j) */            /* 尋找 x signature 中的頂點 */            peak_cnt = 0;              pmax = pmin = Xsig[0];            for (k = 1; k < BLOCK_L; k++)            {                if (pmin>Xsig[k]) pmin = Xsig[k];                if (pmax<Xsig[k]) pmax = Xsig[k];            }            if ((pmax - pmin)>64.0)            {                for (k = 1; k < BLOCK_L-1; k++)                if ((Xsig[k-1] < Xsig[k]) && (Xsig[k] >= Xsig[k+1]))                {                    peak_pos[peak_cnt++] = k;                }            }            /* 計算均值 */            peak_freq = 0.0;            if (peak_cnt>=2)            {                for (k = 0; k < peak_cnt-1; k++)                    peak_freq += peak_pos[k+1]-peak_pos[k];                peak_freq /= peak_cnt-1;            }            /* 4 - 驗證頻率范圍 [1/25-1/3] */            /*     可以擴大到 [1/30-1/2]   */            if (peak_freq > 30.0)                out[x+y*w] = 0.0;            else if (peak_freq < 2.0)                out[x+y*w] = 0.0;            else                out[x+y*w] = 1.0/peak_freq;        }        /* 5 - 未知點 */        for (y = BLOCK_L2; y < h-BLOCK_L2; y++)        for (x = BLOCK_L2; x < w-BLOCK_L2; x++)        {            if (out[x+y*w]<EPSILON)            {                if (out[x+(y-1)*w]>EPSILON)                {                    out[x+(y*w)] = out[x+(y-1)*w];                }                else                {                    if (out[x-1+(y*w)]>EPSILON)                        out[x+(y*w)] = out[x-1+(y*w)];                }            }        }        /* 6 - 頻率插值 */        for (y = BLOCK_L2; y < h-BLOCK_L2; y++)        for (x = BLOCK_L2; x < w-BLOCK_L2; x++)        {            k = x + y*w;            peak_freq = 0.0;            for ( v = -LPSIZE; v <= LPSIZE; v++)            for ( u = -LPSIZE; u <= LPSIZE; u++)                peak_freq += out[(x+u)+(y+v)*w];            freq[k] = peak_freq*LPFACTOR;        }        free(out);    }    return nRet;}/******************************************************************************  * 功能:獲取指紋圖像的有效區域,以進行進一步的處理。  *       如果某個區域不可用用,則掩碼置為0,包括如下區域:  *       邊界,背景點,圖像質量很差的區域。  *       有效區域的掩碼置為255。  * 參數:image        指紋圖像  *       direction    脊線方向  *       frequency    脊線頻率  *       mask         輸出的掩碼  * 返回:錯誤編號******************************************************************************/FvsError_t FingerprintGetMask(const FvsImage_t image, 					const FvsFloatField_t direction,					const FvsFloatField_t frequency, FvsImage_t mask){    FvsError_t nRet = FvsOK;    FvsFloat_t freqmin = 1.0 / 25;    FvsFloat_t freqmax = 1.0 / 3;    /* 輸入圖像的寬度高度 */    FvsInt_t w      = ImageGetWidth (image);    FvsInt_t h      = ImageGetHeight(image);    FvsByte_t* out;    FvsInt_t pitchout;    FvsInt_t pos, posout, x, y;    FvsFloat_t* freq = FloatFieldGetBuffer(frequency);    if (freq==NULL)        return FvsMemory;    /* 需要做改進:檢查 */    nRet = ImageSetSize(mask, w, h);    if (nRet==FvsOK)        nRet = ImageClear(mask);    out = ImageGetBuffer(mask);    if (out==NULL)        return FvsMemory;    if (nRet==FvsOK)    {    pitchout = ImageGetPitch(mask);    for (y = 0; y < h; y++)        for (x = 0; x < w; x++)        {            pos    = x + y * w;            posout = x + y * pitchout;            out[posout] = 0;            if (freq[pos] >= freqmin && freq[pos] <= freqmax)            {                out[posout] = 255;            }        }    /* 補洞 */    for (y = 0; y < 4; y++)        (void)ImageDilate(mask);    /* 去除邊界 */    for (y = 0; y < 12; y++)        (void)ImageErode(mask);    }    return nRet;}/* 細化算法 */#undef P#define P(x,y)      ((x)+(y)*pitch)#define REMOVE_P    { p[P(x,y)]=0x80; changed = FvsTrue; }/******************************************************************************** 鄰域點定義如下:**     9 2 3**     8 1 4**     7 5 6******************************************************************************//* 宏定義 */#define P1  p[P(x  ,y  )]#define P2  p[P(x  ,y-1)]#define P3  p[P(x+1,y-1)]#define P4  p[P(x+1,y  )]#define P5  p[P(x+1,y+1)]#define P6  p[P(x  ,y+1)]#define P7  p[P(x-1,y+1)]#define P8  p[P(x-1,y  )]#define P9  p[P(x-1,y-1)]FvsError_t ImageRemoveSpurs(FvsImage_t image){    FvsInt_t w       = ImageGetWidth(image);    FvsInt_t h       = ImageGetHeight(image);    FvsInt_t pitch   = ImageGetPitch(image);    FvsByte_t* p     = ImageGetBuffer(image);    FvsInt_t x, y, n, t, c;    c = 0;        do     {	n = 0;    	for (y=1; y<h-1; y++)        for (x=1; x<w-1; x++)        {            if( p[P(x,y)]==0xFF)            {                t=0;                if (P3==0 && P2!=0 && P4==0) t++;                if (P5==0 && P4!=0 && P6==0) t++;                if (P7==0 && P6!=0 && P8==0) t++;                if (P9==0 && P8!=0 && P2==0) t++;                if (P3!=0 && P4==0) t++;                if (P5!=0 && P6==0) t++;                if (P7!=0 && P8==0) t++;                if (P9!=0 && P2==0) t++;                if (t==1)				{                    p[P(x,y)] = 0x80;		    		n++;	    				}            }        }		for (y=1; y<h-1; y++)        	for (x=1; x<w-1; x++)        	{            	if( p[P(x,y)]==0x80)	        	p[P(x,y)] = 0;			}       } while (n>0 && ++c < 5);            return FvsOK;}/* a) 驗證其有2-6個鄰點 */#define STEP_A  n = 0; /* 鄰點個數 */ \                if (P2!=0) n++; if (P3!=0) n++; if (P4!=0) n++; if (P5!=0) n++; \                if (P6!=0) n++; if (P7!=0) n++; if (P8!=0) n++; if (P9!=0) n++; \                if (n>=2 && n<=6)/* b) 統計由0變1的個數 */#define STEP_B  t = 0; /* 變化的數目 */ \                if (P9==0 && P2!=0) t++; if (P2==0 && P3!=0) t++; \                if (P3==0 && P4!=0) t++; if (P4==0 && P5!=0) t++; \                if (P5==0 && P6!=0) t++; if (P6==0 && P7!=0) t++; \                if (P7==0 && P8!=0) t++; if (P8==0 && P9!=0) t++; \                if (t==1)/******************************************************************************  * 功能:細化指紋圖像  *       圖像必須是二值化過的(只包含0x00或oxFF)  *       該算法基于領域的判斷,決定某個象素該移去還是保留  * 參數:image   指紋圖像  * 返回:錯誤編號******************************************************************************/ FvsError_t ImageThinConnectivity(FvsImage_t image){    FvsInt_t w       = ImageGetWidth(image);    FvsInt_t h       = ImageGetHeight(image);    FvsInt_t pitch   = ImageGetPitch(image);    FvsByte_t* p     = ImageGetBuffer(image);    FvsInt_t x, y, n, t;    FvsBool_t changed = FvsTrue;    if (p==NULL)        return FvsMemory;    if (ImageGetFlag(image)!=FvsImageBinarized)        return FvsBadParameter;    while (changed==FvsTrue)    {        changed = FvsFalse;        for (y=1; y<h-1; y++)        for (x=1; x<w-1; x++)        {            if (p[P(x,y)]==0xFF)            {                STEP_A                {                    STEP_B                    {                        /*                        c) 2*4*6=0  (2,4 ,or 6 為0)                        d) 4*6*8=0                        */                        if (P2*P4*P6==0 && P4*P6*P8==0)                            REMOVE_P;                    }                }            }        }        for (y=1; y<h-1; y++)        for (x=1; x<w-1; x++)            if (p[P(x,y)]==0x80)                p[P(x,y)] = 0;        for (y=1; y<h-1; y++)        for (x=1; x<w-1; x++)        {            if (p[P(x,y)]==0xFF)            {                STEP_A                {                    STEP_B                    {                        /*                        c) 2*6*8=0                        d) 2*4*8=0                        */                        if (P2*P6*P8==0 && P2*P4*P8==0)                            REMOVE_P;                    }                }            }        }        for (y=1; y<h-1; y++)        for (x=1; x<w-1; x++)            if (p[P(x,y)]==0x80)                p[P(x,y)] = 0;    }    ImageRemoveSpurs(image);        return ImageSetFlag(image, FvsImageThinned);} 	/* 重新定義 REMOVE_P */#undef REMOVE_P#define REMOVE_P    { p[P(x,y)]=0x00; changed = FvsTrue; }/******************************************************************************  * 功能:細化指紋圖像,使用“Hit and Miss”結構元素。  *       圖像必須是二值化過的(只包含0x00或oxFF)  *       該算法的缺點是產生很多偽造的線條(偽特征),  *       必須由另外的算法來消除,后處理非常必要。  * 參數:image   指紋圖像  * 返回:錯誤編號******************************************************************************/FvsError_t ImageThinHitMiss(FvsImage_t image){    FvsInt_t w      = ImageGetWidth(image);    FvsInt_t h      = ImageGetHeight(image);    FvsInt_t pitch  = ImageGetPitch(image);    FvsByte_t* p    = ImageGetBuffer(image);    /*     //     // 0 0 0      0 0     //   1      1 1 0    // 1 1 1      1    //    */    FvsInt_t x,y, t;    FvsBool_t changed = FvsTrue;    if (p==NULL)        return FvsMemory;    if (ImageGetFlag(image)!=FvsImageBinarized)        return FvsBadParameter;    while (changed==FvsTrue)    {        changed = FvsFalse;        for (y=1; y<h-1; y++)        for (x=1; x<w-1; x++)        {            if (p[P(x,y)]==0xFF)            {                /*                // 0 0 0  0   1  1 1 1  1   0                //   1    0 1 1    1    1 1 0                // 1 1 1  0   1  0 0 0  1   0                */                if (p[P(x-1,y-1)]==0 && p[P(x,y-1)]==0 && p[P(x+1,y-1)]==0 &&                    p[P(x-1,y+1)]!=0 && p[P(x,y+1)]!=0 && p[P(x+1,y+1)]!=0)                    REMOVE_P;                if (p[P(x-1,y-1)]!=0 && p[P(x,y-1)]!=0 && p[P(x+1,y-1)]!=0 &&                    p[P(x-1,y+1)]==0 && p[P(x,y+1)]==0 && p[P(x+1,y+1)]==0)                    REMOVE_P;                if (p[P(x-1,y-1)]==0 && p[P(x-1,y)]==0 && p[P(x-1,y+1)]==0 &&                    p[P(x+1,y-1)]!=0 && p[P(x+1,y)]!=0 && p[P(x+1,y+1)]!=0)                    REMOVE_P;                if (p[P(x-1,y-1)]!=0 && p[P(x-1,y)]!=0 && p[P(x-1,y+1)]!=0 &&                    p[P(x+1,y-1)]==0 && p[P(x+1,y)]==0 && p[P(x+1,y+1)]==0)                    REMOVE_P;                /*                //   0 0  0 0      1      1                  // 1 1 0  0 1 1  0 1 1  1 1 0                //   1      1    0 0      0 0                */                                if (p[P(x,y-1)]==0 && p[P(x+1,y-1)]==0 && p[P(x+1,y)]==0 &&                    p[P(x-1,y)]!=0 && p[P(x,y+1)]!=0)                    REMOVE_P;                if (p[P(x-1,y-1)]==0 && p[P(x,y-1)]==0 && p[P(x-1,y)]==0 &&                    p[P(x+1,y)]!=0 && p[P(x,y+1)]!=0)                    REMOVE_P;                if (p[P(x-1,y+1)]==0 && p[P(x-1,y)]==0 && p[P(x,y+1)]==0 &&                    p[P(x+1,y)]!=0 && p[P(x,y-1)]!=0)                    REMOVE_P;                if (p[P(x+1,y+1)]==0 && p[P(x+1,y)]==0 && p[P(x,y+1)]==0 &&                    p[P(x-1,y)]!=0 && p[P(x,y-1)]!=0)                    REMOVE_P;                            }        }    }        ImageRemoveSpurs(image);    return ImageSetFlag(image, FvsImageThinned);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日日噜噜夜夜狠狠视频欧美人| 日本不卡一二三区黄网| 一区二区三区中文字幕| 午夜天堂影视香蕉久久| 国产真实乱对白精彩久久| 不卡一区二区中文字幕| 欧美日韩中文字幕一区| 555www色欧美视频| 亚洲国产精品黑人久久久| 亚洲综合丁香婷婷六月香| 一区二区三区资源| 国产美女av一区二区三区| av一二三不卡影片| 91麻豆精品国产91久久久久久久久| 欧美精品一区二区三区久久久| 亚洲欧美另类图片小说| 免费成人在线观看视频| 成人av资源在线观看| 欧美日韩国产美| 中文字幕一区二区三区四区不卡 | 国产一区二区三区四区在线观看 | 欧美图片一区二区三区| 久久影音资源网| 香蕉成人伊视频在线观看| 成人免费视频视频| 日韩亚洲国产中文字幕欧美| 亚洲精品视频在线看| 国产一区二区不卡在线| 欧美视频第二页| 亚洲卡通欧美制服中文| 精品亚洲免费视频| 欧美日韩国产另类一区| 亚洲美女视频在线| 成人黄色在线看| 精品欧美乱码久久久久久| 亚洲精品欧美二区三区中文字幕| 九色综合狠狠综合久久| 91精品国产欧美日韩| 久色婷婷小香蕉久久| 久久夜色精品国产噜噜av| 国产一区二区三区黄视频| 久久婷婷国产综合国色天香| 国产在线精品一区二区三区不卡| 国产日本欧美一区二区| 成人97人人超碰人人99| 一区二区在线观看视频| 欧美撒尿777hd撒尿| 美女视频黄久久| 国产亚洲va综合人人澡精品| 波多野结衣中文字幕一区二区三区| 国产精品初高中害羞小美女文| www.亚洲色图.com| 午夜欧美电影在线观看| 日韩免费看的电影| caoporn国产一区二区| 亚洲国产另类精品专区| 精品国产污污免费网站入口 | 久久精品国产一区二区三区免费看| 亚洲精品一区在线观看| 成人h精品动漫一区二区三区| 亚洲色图视频网| 制服丝袜亚洲网站| 成人a区在线观看| 日日摸夜夜添夜夜添亚洲女人| 精品电影一区二区| 色婷婷综合久久| 精品亚洲国内自在自线福利| 国产精品日韩精品欧美在线| 欧美日韩精品二区第二页| 国产精品一区在线| 亚洲国产视频直播| 欧美经典一区二区| 欧美裸体一区二区三区| 国产一区二区久久| 亚洲福利视频三区| 国产精品色哟哟| 欧美成人性福生活免费看| av不卡在线观看| 国产一区二区精品久久91| 亚洲精品日产精品乱码不卡| 亚洲精品一区二区三区香蕉| 欧美最猛黑人xxxxx猛交| 韩国av一区二区三区四区| 亚洲一区中文日韩| 国产精品乱人伦| www激情久久| 日韩免费高清电影| 欧美另类z0zxhd电影| 99国产精品一区| 国产不卡一区视频| 国产一区二区福利视频| 蜜桃av一区二区三区电影| 亚洲综合色区另类av| 综合分类小说区另类春色亚洲小说欧美| 这里只有精品免费| 欧美日韩国产小视频在线观看| 99热精品国产| 国产成人av影院| 国产一区二区三区av电影| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲精品日韩一| 亚洲欧美乱综合| 亚洲人成在线观看一区二区| 亚洲欧洲日韩综合一区二区| 国产欧美综合在线观看第十页 | 免费精品视频在线| 天使萌一区二区三区免费观看| 一区二区三区不卡视频| 亚洲乱码精品一二三四区日韩在线| 国产精品丝袜久久久久久app| 国产午夜精品一区二区三区嫩草 | 91精品福利视频| 99久久99久久精品免费观看| aa级大片欧美| 色嗨嗨av一区二区三区| 一本一本大道香蕉久在线精品| 不卡高清视频专区| 成人av在线影院| 色综合色狠狠综合色| 欧美又粗又大又爽| 欧美嫩在线观看| 欧美刺激午夜性久久久久久久| 欧美mv日韩mv亚洲| 国产欧美日韩亚州综合| 亚洲国产精品高清| 亚洲伦理在线精品| 午夜视黄欧洲亚洲| 狠狠色丁香久久婷婷综合丁香| 蜜桃久久久久久| 国产91精品免费| 一本大道久久a久久综合| 欧美午夜片在线看| 日韩欧美另类在线| 久久精品欧美一区二区三区麻豆| 国产精品电影一区二区| 亚洲综合色在线| 久久99国产精品久久99 | 久久精品一区二区三区不卡牛牛| 中文字幕欧美区| 亚洲精品第1页| 精品一区二区三区免费毛片爱| 国产成人综合在线观看| 91视频国产资源| 欧美一区二区人人喊爽| 国产视频一区在线观看 | 国产精品久久久久久亚洲毛片 | 亚洲人成网站精品片在线观看| 亚洲一区二区四区蜜桃| 青娱乐精品在线视频| 成人一级片网址| 在线电影一区二区三区| 久久精品人人做人人综合| 亚洲伊人色欲综合网| 国产麻豆91精品| 精品视频在线免费看| 精品免费99久久| 亚洲一线二线三线视频| 国产成人午夜高潮毛片| 欧美精品123区| 国产精品盗摄一区二区三区| 性做久久久久久久久| 色婷婷精品大在线视频| 91精品黄色片免费大全| 欧美激情一区三区| 蜜臀av在线播放一区二区三区| 成人性生交大片免费看中文| 91精品欧美一区二区三区综合在 | 国产欧美日韩另类一区| 久久成人麻豆午夜电影| 日韩免费观看2025年上映的电影| 日韩制服丝袜av| 欧美一区二区成人6969| 日本不卡一区二区| 日韩精品一区二区三区中文不卡| 三级欧美韩日大片在线看| 欧美一区二区三区公司| 久久精品国产久精国产| 精品国产凹凸成av人导航| 国产在线国偷精品免费看| 国产亚洲短视频| a级精品国产片在线观看| 亚洲精品视频自拍| 7777精品伊人久久久大香线蕉的| 亚洲v日本v欧美v久久精品| 欧美一区二区三区视频免费播放| 奇米一区二区三区| 国产网站一区二区| 91香蕉视频污| 亚洲成人av电影在线| 日韩精品一区二区三区视频播放| 久久机这里只有精品| 国产精品久久久久一区| 欧美在线|欧美| 黄色资源网久久资源365| 欧美国产激情二区三区| 色呦呦日韩精品| 美国十次综合导航| 国产精品视频一二三区| 欧美疯狂性受xxxxx喷水图片| 国产在线一区观看|