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

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

?? chamfer_sdt2.c

?? The salience distance transform incorporates edge strength information into the distance transform.
?? C
字號:
/* * computes salience distance transform * distance weighted by: *        edge magnitude *        pixel list length * * (serial) chamfer algorithm used, either 3-4 or 5-7-11 * * Paul Rosin * August 1994 */#include <stdio.h>#include <math.h>#ifndef FALSE# define FALSE 0# define TRUE (!FALSE)#endif#define K 1#define MAX_SIZE 1024#include "pgmio.h"#define CHAMFER34   0#define CHAMFER5711 1#define ALGORITHM CHAMFER34#if ALGORITHM == CHAMFER34# define MASK_SIZE 5  int x_offset[MASK_SIZE] = { -1,  0,  1, -1,  0 };  int y_offset[MASK_SIZE] = { -1, -1, -1,  0,  0 };  int i_offset[MASK_SIZE] = {  4,  3,  4,  3,  0 };#elif ALGORITHM == CHAMFER5711# define MASK_SIZE 9  int x_offset[MASK_SIZE] = { -1,  1, -2, -1,  0,  1,  2, -1,  0 };  int y_offset[MASK_SIZE] = { -2, -2, -1, -1, -1, -1, -1,  0,  0 };  int i_offset[MASK_SIZE] = { 11, 11, 11,  7,  5,  7, 11,  5,  0 };#endif#define MAX_PIXELS 50000int x[MAX_PIXELS],y[MAX_PIXELS];int no_pixels;unsigned char tmp[MAX_SIZE][MAX_SIZE];int image_dist[MAX_SIZE][MAX_SIZE];unsigned char image_mag[MAX_SIZE][MAX_SIZE];double image_measure[MAX_SIZE][MAX_SIZE];int image_length[MAX_SIZE][MAX_SIZE];int height,width,depth;int max_iter = 10;    /* usually terminates after 4 or 5 iterations anyway */main(argc,argv)int argc;char *argv[];{    int i,j,x,y;    int change;    int d[MASK_SIZE],m[MASK_SIZE],l[MASK_SIZE];    double measure,min_measure,prev_measure;    char *binary_file,*outfile,*edge_file,*pixel_file;    double max_val;    int min_loc;    int xn,yn;    FILE *fp;    char file_type[50];    int endoffile;    pixel_file = binary_file = outfile = edge_file = NULL;    /* parse command line */    for(i = 1; i < argc; i++) {        if (argv[i][0] == '-') {            switch(argv[i][1]) {                case 'b':                    i++;                    binary_file = argv[i];                    break;                case 'e':                    i++;                    edge_file = argv[i];                    break;                case 'o':                    i++;                    outfile = argv[i];                    break;                case 'p':                    i++;                    pixel_file = argv[i];                    break;                case 'n':                    i++;                    max_iter = atoi(argv[i]);                    printf("number of iterations: %d\n",max_iter);                    break;                default:                    printf("unknown option %s\n",argv[i]);                    options(argv[0]);            }        }        else {            printf("unknown option %s\n",argv[i]);            options(argv[0]);        }    }    if (outfile == NULL || edge_file == NULL || pixel_file == NULL)        options(argv[0]);    /* read and pixel lists and store lengths */    if ((fp=fopen(pixel_file,"r")) == NULL) {        printf("cant open pixel file: %s\n",pixel_file);        exit(-1);    }    /* read magic word for format of file */    fscanf(fp,"%s\n",file_type);    j = strcmp(file_type,"pixel");    if (j != 0){        printf("not link data file - aborting\n");        exit();    }    for (j = 0; j < height; j++)        for (i = 0; i < width; i++)            image_length[j][i] = 0;    do {        read_link_data(fp,&endoffile);        store_length();    } while (!endoffile);    fclose(fp);#if (ALGORITHM == CHAMFER34)    printf("performing chamfer3-4\n");#elif (ALGORITHM == CHAMFER5711)    printf("performing chamfer5-7-11\n");#endif    read_pgm(image_mag,edge_file,&width,&height,&depth);    if (binary_file != NULL) {        read_pgm(tmp,binary_file,&width,&height,&depth);        /* copy into integer array */        for (y = 0; y < height; y++)            for (x = 0; x < width; x++)                image_dist[x][y] = tmp[x][y];    }    else {        /* threshold magnitude image */        for (y = 0; y < height; y++)            for (x = 0; x < width; x++)                if ((unsigned int)image_mag[x][y] > 0)                    image_dist[x][y] = 0;                else                    image_dist[x][y] = 255;    }    /* propagate distance etc */    j = 0;    do {        j++;        printf("iteration %d\n",j);        change = FALSE;        /* forward pass */        for (y = 1; y < height-1; y++) {            for (x = 1; x < width-1; x++) {                prev_measure = (double) (image_dist[x][y]+K) /                               (double) (((unsigned int)image_mag[x][y]+K) *                                          (image_length[x][y]+K));                for (i = 0; i < MASK_SIZE; i++) {                    xn = x + x_offset[i]; yn = y + y_offset[i];                    d[i] = image_dist[xn][yn] + i_offset[i];                    m[i] = (unsigned int)image_mag[xn][yn];                    l[i] = image_length[xn][yn];                }                min_loc = 0;                min_measure = (double) (d[0]+K) /                              (double) ((m[0]+K) * (l[0]+K));                for (i = 1; i < MASK_SIZE; i++) {                    measure = (double) (d[i]+K) / (double) ((m[i]+K) * (l[i]+K));                    if (measure < min_measure) {                        min_measure = measure;                        min_loc = i;                    }                }                image_dist[x][y] = d[min_loc];                image_mag[x][y] = m[min_loc];                image_length[x][y] = l[min_loc];                if (prev_measure != min_measure)                    change = TRUE;            }        }        /* backward pass */        for (y = height-2; y >= 1; y--) {            for (x = width-2; x >= 1; x--) {                prev_measure = (double) (image_dist[x][y]+K) /                               (double) (((unsigned int)image_mag[x][y]+K) *                                          (image_length[x][y]+K));                for (i = 0; i < MASK_SIZE; i++) {                    xn = x - x_offset[i]; yn = y - y_offset[i];                    d[i] = image_dist[xn][yn] + i_offset[i];                    m[i] = (unsigned int)image_mag[xn][yn];                    l[i] = image_length[xn][yn];                }                min_loc = 0;                min_measure = (double) (d[0]+K) /                              (double) ((m[0]+K) * (l[0]+K));                for (i = 1; i < MASK_SIZE; i++) {                    measure = (double) (d[i]+K) / (double) ((m[i]+K) * (l[i]+K));                    if (measure < min_measure) {                        min_measure = measure;                        min_loc = i;                    }                }                image_dist[x][y] = d[min_loc];                image_mag[x][y] = m[min_loc];                image_length[x][y] = l[min_loc];                if (prev_measure != min_measure)                    change = TRUE;            }        }    } while (change && j < max_iter);    /* calculate measure values */    for (y = 1; y < height-1; y++) {        for (x = 1; x < width-1; x++) {            image_measure[x][y] = (double) (image_dist[x][y]+K) /                                 ((double) ((unsigned int)image_mag[x][y]+K) *                                            (image_length[x][y]+K));        }    }    /* rescale */    max_val = image_measure[1][1];    for (y = 1; y < height-1; y++)        for (x = 1; x < width-1; x++)            if (image_measure[x][y] > max_val)                max_val = image_measure[x][y];    for (y = 1; y < height-1; y++)        for (x = 1; x < width-1; x++)            tmp[x][y] = (unsigned int)(image_measure[x][y] * 255 / max_val);    /* reset borders */    for (y = 0; y < height; y++)        tmp[0][y] = tmp[width-1][y] = 255;    for (x = 0; x < width; x++)        tmp[x][0] = tmp[x][height-1] = 255;    write_pgm(tmp,outfile,width,height);}store_length(){    int i;    for (i = 0; i < no_pixels; i++)        image_length[x[i]][y[i]] = no_pixels;}read_link_data(fp,endoffile)FILE *fp;int *endoffile;{    char dumstring[50];    int j;    fscanf(fp,"%s %d\n",dumstring,&j);    j = -1;    do{       j++;       fscanf(fp,"%d %d\n",&x[j],&y[j]);    } while(x[j] != -1);    *endoffile = (y[j] == -1);    no_pixels = j;}options(progname)char *progname;{    printf("usage: %s [options]\n",progname);    printf("     -b file    binary edge map (optional)\n");    printf("     -e file    edge magnitude map\n");    printf("     -o file    output distance map\n");    printf("     -p file    pixel lists\n");    printf("     -n int     maximum number of iterations (default: %d)\n",max_iter);    exit(-1);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲chinese男男1069| 国内久久精品视频| 国产综合一区二区| 成人高清在线视频| 91福利国产精品| 中文字幕国产一区二区| 成人精品在线视频观看| 国产精品福利电影一区二区三区四区| 国产在线国偷精品免费看| 日本一区二区三区久久久久久久久不 | 日韩激情av在线| 日韩精品一区二区三区四区| 国内精品国产成人国产三级粉色 | 成人av在线网| 一区二区三区在线视频播放| 欧美日韩国产成人在线免费| 狂野欧美性猛交blacked| 久久久99久久| 色又黄又爽网站www久久| 天天亚洲美女在线视频| 精品日韩99亚洲| hitomi一区二区三区精品| 一区二区三区在线免费视频| 日韩免费成人网| 96av麻豆蜜桃一区二区| 日韩电影一区二区三区| 欧美国产激情一区二区三区蜜月| 91黄色免费看| 久久国产人妖系列| 亚洲欧洲av在线| 91精选在线观看| eeuss鲁片一区二区三区在线看| 亚洲激情图片一区| 26uuu精品一区二区| 97se狠狠狠综合亚洲狠狠| 蜜臀久久99精品久久久久宅男| 国产免费成人在线视频| 91精品国产高清一区二区三区| 国产成人精品亚洲午夜麻豆| 亚洲成a人片在线不卡一二三区| 久久久青草青青国产亚洲免观| 日本高清视频一区二区| 国产呦萝稀缺另类资源| 五月天一区二区三区| 国产日韩精品视频一区| 欧美日韩中文一区| 91在线云播放| 国产精品资源在线观看| 日韩av一区二区在线影视| 自拍偷拍亚洲欧美日韩| 久久精品一区二区三区四区| 欧美老肥妇做.爰bbww| 色哟哟日韩精品| av在线播放不卡| 懂色av一区二区三区蜜臀| 免费在线观看视频一区| 艳妇臀荡乳欲伦亚洲一区| 国产精品久久网站| 久久综合色鬼综合色| 日韩午夜在线播放| 欧美乱熟臀69xxxxxx| 在线精品视频免费播放| 91免费视频网| bt7086福利一区国产| 国产老妇另类xxxxx| 欧美高清在线一区二区| 91麻豆精品国产91久久久| 色综合天天视频在线观看 | 秋霞午夜鲁丝一区二区老狼| 日韩精品一区二区三区老鸭窝 | 国产欧美一区视频| 欧美精品aⅴ在线视频| av在线不卡免费看| 国内精品久久久久影院一蜜桃| 午夜日韩在线观看| 亚洲欧美日韩系列| 久久网站热最新地址| 精品国精品国产| 91精品国产91热久久久做人人| 色噜噜狠狠成人网p站| 国产不卡一区视频| 激情av综合网| 黑人巨大精品欧美一区| 五月天亚洲婷婷| 亚洲欧美另类在线| 一区二区久久久| 亚洲色图欧洲色图婷婷| 日本一区二区三级电影在线观看| 日韩欧美中文字幕公布| 欧美制服丝袜第一页| 91国产精品成人| 在线观看日韩高清av| 色综合激情久久| 在线视频综合导航| 一本色道亚洲精品aⅴ| 99国产精品久久久久| 成人av集中营| 一本久久a久久免费精品不卡| 成人性生交大片免费看在线播放 | 亚洲乱码国产乱码精品精小说 | 亚洲国产欧美日韩另类综合| 亚洲欧美一区二区久久| 亚洲人快播电影网| 中文字幕欧美日韩一区| 欧美激情中文不卡| 国产精品久久久久久久久免费桃花| 亚洲国产高清aⅴ视频| 中文字幕在线不卡一区| 亚洲免费视频成人| 亚洲综合色区另类av| 亚洲五月六月丁香激情| 亚洲福利视频三区| 亚洲影院理伦片| 国产一区二区伦理片| 国产成人精品午夜视频免费| 波多野结衣欧美| 欧美少妇性性性| 欧美一区二区视频在线观看| 日韩免费成人网| 国产精品久久久久9999吃药| 成人欧美一区二区三区白人| 亚洲精品久久嫩草网站秘色| 日韩电影在线观看电影| 国产精品综合网| 色婷婷激情久久| 精品欧美久久久| 亚洲人快播电影网| 日本美女视频一区二区| 国产河南妇女毛片精品久久久| 日本韩国一区二区| 日韩一二三区不卡| 亚洲国产精品黑人久久久| 中文字幕在线不卡国产视频| 亚洲成人av一区二区三区| 久久99深爱久久99精品| 一本色道久久综合亚洲aⅴ蜜桃| 欧美一区二区三区精品| 久久久九九九九| 视频一区二区三区在线| 国产成人日日夜夜| 欧美三级在线视频| 国产午夜精品久久久久久久| 一区二区三区国产精华| 日韩高清在线不卡| 色婷婷av一区| 久久网这里都是精品| 亚洲国产欧美日韩另类综合| 国产伦理精品不卡| 在线免费观看成人短视频| 日韩精品一区二区三区视频| 亚洲精品免费电影| 久久成人18免费观看| 成人av免费在线| 26uuu色噜噜精品一区| 午夜国产不卡在线观看视频| www.欧美日韩国产在线| 欧美mv和日韩mv国产网站| 一区二区三区资源| 国产91精品在线观看| 精品国产免费视频| 日韩黄色小视频| 色天使色偷偷av一区二区| 国产亚洲欧洲一区高清在线观看| 婷婷中文字幕综合| 色综合久久天天| 日韩美女视频一区二区在线观看| 天天av天天翘天天综合网色鬼国产| 成人激情文学综合网| 欧美精品一区二区三区在线播放 | 日韩欧美一区在线| 亚洲一区二区视频| 国产精品亚洲а∨天堂免在线| 2021国产精品久久精品| 日本亚洲免费观看| 欧美日韩一区二区三区高清| 亚洲视频狠狠干| 成人深夜视频在线观看| 久久久久久久久蜜桃| 日韩精品每日更新| 日本高清无吗v一区| 欧美国产欧美综合| 丁香啪啪综合成人亚洲小说 | 色综合咪咪久久| 国产精品第五页| 99精品1区2区| 亚洲免费观看高清完整版在线观看 | 视频在线观看一区| 欧美性猛交一区二区三区精品| 中文字幕日本不卡| 97久久精品人人澡人人爽| 亚洲精品视频免费观看| 色婷婷av久久久久久久| 亚洲综合清纯丝袜自拍| 欧美视频日韩视频在线观看| 天天综合天天做天天综合| 欧美剧在线免费观看网站| 蜜臀久久99精品久久久久宅男 | 色综合婷婷久久| 亚洲精品成人少妇| 欧美在线999|