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

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

?? chamfer_sdt3.c

?? The salience distance transform incorporates edge strength information into the distance transform.
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * computes salience distance transform * can also generate Voronoi diagram * distance weighted by: *        edge magnitude *        pixel list length *        clutterness (averaged over each pixel list) * * (serial) chamfer algorithm used, either 3-4 or 5-7-11 * * points not in pixel lists (e.g. junctions) are removed from * gradient image * * Paul Rosin * March 1995 */#include <stdio.h>#include <math.h>#ifndef FALSE# define FALSE 0# define TRUE (!FALSE)#endif#define SIMPLE TRUE /* quick hack to get XY images output without saliency stuff*/#define K 1#define MAX_SIZE 1500#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 X[MAX_SIZE][MAX_SIZE];int Y[MAX_SIZE][MAX_SIZE];double clutter_area[MAX_SIZE][MAX_SIZE];double tmp2[MAX_SIZE][MAX_SIZE];int curve_labels[MAX_SIZE][MAX_SIZE];int height,width,depth;int max_iter = 10;    /* usually terminates after 4 or 5 iterations anyway */int cancel_length = FALSE;char fnx[] = "xxx";char fny[] = "yyy";FILE *fp_in;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 c[MASK_SIZE];    double measure,min_measure,prev_measure;    char *binary_file,*outfile,*edge_file,*pixel_file;    char *voronoi_file,*clutter_file,*ascii_file;    double max_val;    int min_loc;    int xn,yn;    FILE *fp;    char file_type[50];    int endoffile;    ascii_file = clutter_file = voronoi_file = NULL;    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 'a':                    i++;                    ascii_file = argv[i];                    break;                case 'b':                    i++;                    binary_file = argv[i];                    break;                case 'e':                    i++;                    edge_file = argv[i];                    break;                case 'o':                    i++;                    outfile = argv[i];                    break;                case 'L':                    cancel_length = TRUE;                    break;                case 'p':                    i++;                    pixel_file = argv[i];                    break;                case 'c':                    i++;                    clutter_file = argv[i];                    break;                case 'v':                    i++;                    voronoi_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_pgm(image_mag,edge_file,&width,&height,&depth);    if ((width > MAX_SIZE) || (height > MAX_SIZE)) {        fprintf(stderr,"ERROR: Maximum image size is %d x %d\n",            MAX_SIZE,MAX_SIZE);        exit(-1);    }    if (cancel_length)        printf("NOT using length attribute\n");    /* 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(-1);    }    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    /* remove junctions in gradient image not in pixel lists */    for (y = 0; y < height; y++)        for (x = 0; x < width; x++)            if (image_length[x][y] == 0)                image_mag[x][y] = 0;    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] = (int)(tmp[x][y]) * 10;    }    else {        /* threshold magnitude image */        for (y = 0; y < height; y++)            for (x = 0; x < width; x++)                if ((unsigned char)image_mag[x][y] != 0)                    image_dist[x][y] = 0;                else                    image_dist[x][y] = 255 * 10;    }    /* +++++++++++++ FIRST PASS - calculate Voronoi diagram +++++++++++++ */    printf("calculating Voronoi diagram\n");    /* initialise measure arrays */    for (y = 0; y < height; y++)        for (x = 0; x < width; x++) {            X[x][y] = x;            Y[x][y] = y;        }    /* propagate distance etc */    j = 0;#if SIMPLE	{        /* forward pass */        for (y = 1; y < height-1; y++) {            for (x = 1; x < width-1; x++) {                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];                }                min_loc = 0;                min_measure = d[0];                for (i = 1; i < MASK_SIZE; i++) {                    measure = d[i];                    if (measure < min_measure) {                        min_measure = measure;                        min_loc = i;                    }                }                image_dist[x][y] = d[min_loc];                xn = x + x_offset[min_loc];                yn = y + y_offset[min_loc];                X[x][y] = X[xn][yn];                Y[x][y] = Y[xn][yn];            }        }        /* backward pass */        for (y = height-2; y >= 1; y--) {            for (x = width-2; x >= 1; x--) {                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];                }                min_loc = 0;                min_measure = d[0];                for (i = 1; i < MASK_SIZE; i++) {                    measure = d[i];                    if (measure < min_measure) {                        min_measure = measure;                        min_loc = i;                    }                }                image_dist[x][y] = d[min_loc];                xn = x - x_offset[min_loc];                yn = y - y_offset[min_loc];                X[x][y] = X[xn][yn];                Y[x][y] = Y[xn][yn];            }        }	}    save_xy(fnx,fny);    fprintf(stderr,"Generated XY images; aborting now\n");    exit(-1);#else    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 char)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];                xn = x + x_offset[min_loc];                yn = y + y_offset[min_loc];                X[x][y] = X[xn][yn];                Y[x][y] = Y[xn][yn];                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 char)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];                xn = x - x_offset[min_loc];                yn = y - y_offset[min_loc];                X[x][y] = X[xn][yn];                Y[x][y] = Y[xn][yn];                if (prev_measure != min_measure)                    change = TRUE;            }        }    } while (change && j < max_iter);#endif    if (voronoi_file != NULL) {        save_voronoi2(pixel_file,voronoi_file);    }    if (ascii_file != NULL)        save_ascii(ascii_file);    /* ++++++++++++++++++ INTERMEDIATE PROCESSING ++++++++++++++++++ */    for (y = 0; y < height; y++)        for (x = 0; x < width; x++)            clutter_area[x][y] = 0;    for (y = 1; y < height-1; y++)        for (x = 1; x < width-1; x++) {            int xx,yy;            xx = X[x][y];            yy = Y[x][y];            clutter_area[xx][yy]++;        }    if (clutter_file != NULL) {        save_clutter(pixel_file,clutter_file);    }    /* read and pixel lists and store lengths */    if ((fp=fopen(pixel_file,"r")) == NULL) {        printf("cant open %s\n",pixel_file);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久成人免费日本黄色| 欧美aⅴ一区二区三区视频| 精品噜噜噜噜久久久久久久久试看| 91视视频在线观看入口直接观看www | 久久免费的精品国产v∧| 日韩欧美在线观看一区二区三区| 欧美区视频在线观看| 欧洲一区在线观看| 欧美日韩国产一二三| 欧美人成免费网站| 日韩一区二区三区精品视频| 欧美一区二区啪啪| 久久久亚洲精品一区二区三区| 日韩三级在线观看| 国产欧美日韩久久| 日韩一区欧美一区| 亚洲最色的网站| 日本成人在线网站| 国产综合成人久久大片91| 国产成人免费视频| 色婷婷激情综合| 日韩欧美激情在线| 国产精品视频一二三区| 一区二区三区中文免费| 亚洲成国产人片在线观看| 蜜臀久久久久久久| 成人av影视在线观看| 欧美天天综合网| 精品国产a毛片| 最新国产の精品合集bt伙计| 香蕉成人伊视频在线观看| 国产精品自拍一区| 在线观看国产91| 久久久精品免费观看| 1024国产精品| 久久91精品久久久久久秒播| 91影视在线播放| 精品国产3级a| 亚洲激情校园春色| 国产美女一区二区| 欧美一级一区二区| 亚洲欧洲av另类| 国产乱人伦偷精品视频免下载| 成人听书哪个软件好| 欧美一区二区在线观看| 中文字幕日韩一区| 精品影视av免费| 欧美色综合网站| 国产精品久久久久桃色tv| 奇米影视7777精品一区二区| 91在线免费播放| 国产精品丝袜一区| 久久精品国产亚洲高清剧情介绍| 色综合久久久久久久久久久| 久久久91精品国产一区二区精品| 午夜视频一区二区| 99久久精品久久久久久清纯| 欧美精品一区二区三区视频| 蜜臀av性久久久久av蜜臀妖精 | 91伊人久久大香线蕉| 精品捆绑美女sm三区| 亚洲小说春色综合另类电影| 成人h精品动漫一区二区三区| 精品成人免费观看| 日韩国产欧美在线观看| 在线日韩一区二区| 亚洲精品五月天| 99re热这里只有精品视频| 国产亚洲短视频| 国产一区二区三区观看| 日韩欧美一区中文| 日本vs亚洲vs韩国一区三区二区 | 亚洲天天做日日做天天谢日日欢| 国产精品中文字幕日韩精品| 日韩欧美国产1| 久久狠狠亚洲综合| 欧美精品一区男女天堂| 激情综合五月天| 久久这里只有精品视频网| 国产综合色精品一区二区三区| 精品国产乱码久久久久久免费| 精品一区二区三区香蕉蜜桃 | 欧美性三三影院| 婷婷开心激情综合| 91精品国产综合久久香蕉麻豆| 亚洲v中文字幕| 91精品久久久久久久99蜜桃| 免费视频一区二区| 久久精品视频一区| 91色视频在线| 天涯成人国产亚洲精品一区av| 欧美日韩日日摸| 麻豆精品在线播放| 欧美韩日一区二区三区| 色屁屁一区二区| 免费观看日韩电影| 国产精品欧美极品| 欧美性感一区二区三区| 日本伊人色综合网| 国产精品女同一区二区三区| 91在线国产观看| 日韩专区欧美专区| 久久午夜色播影院免费高清| 不卡视频一二三四| 日本中文字幕不卡| 欧美国产日韩一二三区| 欧美性生活影院| 国产精一区二区三区| 亚洲视频免费在线观看| 69精品人人人人| 成人免费精品视频| 亚洲国产成人91porn| 精品999在线播放| 91国偷自产一区二区开放时间| 奇米色一区二区三区四区| 国产精品青草久久| 日韩女优制服丝袜电影| 99精品国产热久久91蜜凸| 免费精品视频最新在线| 亚洲视频资源在线| 久久久国产综合精品女国产盗摄| 91理论电影在线观看| 精品一区二区免费看| 一区二区免费在线播放| 国产欧美一区二区精品忘忧草| 欧美日韩一区二区欧美激情 | 亚洲高清久久久| 欧美国产激情二区三区| 日韩亚洲国产中文字幕欧美| 91免费看视频| 成人深夜福利app| 美女国产一区二区三区| 一区二区三区在线播| 久久一二三国产| 91精品国产一区二区三区| 91亚洲永久精品| 成人在线视频一区二区| 狠狠色综合色综合网络| 三级亚洲高清视频| 亚洲一级电影视频| 亚洲免费观看高清完整版在线观看| 精品剧情在线观看| 欧美成人国产一区二区| 欧美放荡的少妇| 欧美日韩国产免费| 欧美性猛片aaaaaaa做受| 色综合久久99| 色综合久久88色综合天天免费| av一区二区久久| 91丨porny丨国产入口| 99久久99久久免费精品蜜臀| 国产a久久麻豆| 不卡一二三区首页| 色又黄又爽网站www久久| 色悠悠亚洲一区二区| 色综合久久88色综合天天免费| 91美女视频网站| 在线免费精品视频| 欧美视频日韩视频| 欧美精品tushy高清| 欧美一区二区啪啪| 久久天堂av综合合色蜜桃网| 欧美精品一区二区三区久久久| 精品国产免费人成在线观看| 欧美成人精品二区三区99精品| 久久综合狠狠综合久久综合88| 国产蜜臀av在线一区二区三区| 中文一区二区完整视频在线观看| 国产精品国产三级国产普通话蜜臀 | 欧美高清性hdvideosex| 欧美一区二区三区免费| 亚洲精品一区二区三区福利| 久久久精品国产免大香伊| 国产精品久久久久久户外露出 | 五月婷婷久久丁香| 久久精工是国产品牌吗| 国产成人av电影在线播放| 91视频精品在这里| 日韩欧美国产成人一区二区| 国产午夜亚洲精品羞羞网站| 一区二区三区日本| 久久精品国产在热久久| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲天堂久久久久久久| 亚洲成年人网站在线观看| 国产剧情在线观看一区二区| 一本色道久久综合亚洲aⅴ蜜桃| 91麻豆精品国产91久久久使用方法| 精品国产免费视频| 亚洲一二三区视频在线观看| 久久97超碰国产精品超碰| 97精品国产露脸对白| 精品日产卡一卡二卡麻豆| 国产精品美女视频| 日本不卡1234视频| 日本高清不卡一区| 久久综合九色综合97婷婷| 99久久777色| 日韩欧美的一区| 亚洲一区免费视频|