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

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

?? ami_snake.h

?? ami_snake算法源代碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
#define MAX(X,Y) ((X)>(Y)?(X):(Y))#define MIN(X,Y) ((X)<(Y)?(X):(Y))#define ami_snake_tol_error 0.1 /* TOLERANCIA PARA EL ERROR DE CONVERGENCIA DE ami_snake() */#define ami_snake_dt 0.5        /* INCREMENTO TEMPORAL USADO PARA RESOLVER LA EDP EN ami_snake() */#define ami_snake_tol_grad2 10. /* TOLERANCIA PARA LA NORMA AL CUADRADRO DEL GRADIENTE DE LA IMAGEN                                   DE LEVEL SET PARA CAMBIAR EL VALOR DE LAIMAGEN. (ESTO ES SOLO PARA				   ACELERAR EL PROCESO Y EVITAR CALCULOS INNECESARIOS */void ami_semilla(long m,float *imagen,unsigned short width,long size, float nivel1,float nivel2);/* ALGORITMO DE SEMILLA PARA RELLENAR LA IMAGEN A PARTIR DE UN NIVEL CON OTRO NIVEL */int ami_rellenar_poligono(float **imagen,int *x,int *y,int Np,float nivel1,float nivel2,                          int borde,int *width,int *height,int *xd,int *yd);/* FUNCION QUE CONSTRUYE UNA IMAGEN RELLENANDO UN POLIGONO */int ami_snake(unsigned char *imagen,int width,int height,int *x,int *y,int Np,int borde,int *xd,int *yd,              float alfa,float lambda,float sigma,int Nescalas,float **imagen_level_set_r,int *width_g,int *height_g,int Niter);/* FUNCION QUE CALCULA LOS SNAKES GEODESICOS A PARTIR DE UN POLIGONO */void ami_snake_iteracion(float *imagen_level_set,float *imagen_level_set_x,float *imagen_level_set_y,                    float *imagen_g,float *imagen_g_x, float *imagen_g_y,int width2,int height2,                    float lambda,float *error,float max_grad_g);/* FUNCION QUE CALCULA UNA ITERACION EN EL PROCEDIMIENTO DE ami_snake() */void ami_dibujar_segmento(float *data,int width,int height,int x0,int y0,int x1,int y1,float color);/* FUNCION QUE DIBUJA UN SEGMENTO */void ami_gauss_conv_alma(float *rim,float sigma_x,float sigma_y,float precision,int width,int height);/* APPROXIMATION TO GAUSSIAN FILTER USING ALVAREZ-MAZORRA ALGORITHM */void ami_grad(float *image,int width,int height,float *image_x,float *image_y);/* FUNCION QUE CALCULA EL GRADIENTE DE UNA IMAGEN *//**************************************************//* FUNCION QUE CALCULA EL GRADIENTE DE UNA IMAGEN *//**************************************************/void ami_grad(float *image,/* ORIGINAL IMAGE */	      int width,int height,/* IMAGE SIZE */	      float *image_x,float *image_y /* OUTPUT GRADIENT */){  int i,j;  long m,size=width*height;  double coef1,coef2,c1,d1;  coef1=sqrt((double) 2.);  coef2=0.25*(2.-coef1);  coef1=0.5*(coef1-1);  /* BUCLE PRINCIPAL */  for(i=1;i<height-1;i++){    for(j=1;j<width-1;j++){      m=i*width+j;      c1=image[m+width+1]-image[m-width-1];      d1=image[m-width+1]-image[m+width-1];      image_y[m]=coef1*(image[m+width]-image[m-width])+coef2*(c1-d1);      image_x[m]=-(coef1*(image[m+1]-image[m-1])+coef2*(c1+d1));    }  }  /* EN LOS BORDES ASIGNAMOS 0 A LAS DERIVADAS */  for(m=0;m<width;m++){    image_y[m]=image_y[size-1-m]=0.;    image_x[m]=image_x[size-1-m]=0.;  }  for(m=0;m<(size-1);m+=width){    image_y[m]=image_y[m+width-1]=0.;    image_x[m]=image_x[m+width-1]=0.;  }}/********************************************************************//* APPROXIMATION TO GAUSSIAN FILTER USING ALVAREZ-MAZORRA ALGORITHM *//********************************************************************/void ami_gauss_conv_alma(float *rim,  /* Original picture and output picture*/float sigma_x,    /* standard deviation of the gaussian in the horizontal axis direction*/float sigma_y,    /* standard deviation of the gaussian in the vertical axis direction */float precision,  /* non-negative number to indicate the precisi髇 of the convolution */int width,int height) /* image dimensions */{   unsigned long m,M,cont;   unsigned short i,j,nx1,ny1;   double *z;   float l_x,v_x,l_y,v_y;   int nx=height;   int ny=width;   int Nc_x=(int) (precision*sigma_x>1?precision*sigma_x:1);   float t_x=sigma_x*sigma_x/(2*Nc_x);   int Nc_y=(int) (precision*sigma_y>1?precision*sigma_y:1);   float t_y=sigma_y*sigma_y/(2*Nc_y);   int Nc_a=(Nc_x>Nc_y)?Nc_x:Nc_y;   /* DEFINIMOS LOS PARAMETROS DEL ALGORITMO EN X E Y*/   if(t_x>0){     l_x=(1.+2.*t_x-sqrt((double) 4*t_x+1))/(2*t_x);     v_x=l_x/t_x;   }   if(t_y>0){     l_y=(1.+2.*t_y-sqrt((double) 4*t_y+1))/(2*t_y);     v_y=l_y/t_y;   }   nx1=nx-1; ny1=ny-1;   M=nx*ny;   /* COGEMOS MEMORIA PARA EL VECTOR DE PASO */   if(nx>ny)	z=(double *) malloc(nx*sizeof(double));   else 	z=(double *) malloc(ny*sizeof(double));   /* BUCLE PRINCIPAL DE LAS ITERACIONES */   for(cont=0;cont<Nc_a;cont++){     if(t_x>0 && cont<Nc_x){       for(j=0;j<ny;j++){         z[0]=rim[j]/(1-l_x);         m=j;         for(i=1;i<nx;i++){           z[i]=rim[m+=ny]+l_x*z[i-1];         }         rim[m]=z[nx1]/(1-l_x);         i=nx-1;         while(i>0){	       rim[m-ny]=(z[--i]+l_x*rim[m]);           m-=ny;         }       }	   m=0;       while(m<M) rim[m++]*=v_x;	 }	 if(t_y>0 && cont<Nc_y){       m=0;       for(i=0;i<nx;i++){         z[0]=rim[m]/(1-l_y);         for(j=1;j<ny;j++){           z[j]=rim[++m]+l_y*z[j-1];         }         rim[m]=z[ny1]/(1-l_y);         j=ny1;         while(j>0){           --m;	       rim[m]=z[--j]+l_y*rim[m+1];         }         m+=ny;       }       m=0;       while(m<M) rim[m++]*=v_y;     }  }  free(z);}/**********************************//* FUNCION QUE DIBUJA UN SEGMENTO *//*********************************/void ami_dibujar_segmento(   float *data, /* IMAGEN DONDE SE VA A DIBUJAR EL SEGMENTO */   int width, int height, /* DIMENSIONES DE LA IMAGEN */   int x0, int y0, /* COORDENADAS 1 PUNTO DEL SEGMENTO */   int x1, int y1,  /* COORDENADAS 2 PUNTO DEL SEGMENTO */   float color)     /* COLOR CON EL QUE SE RELLENA EL SEGMENTO */{ int incx = ami_abs(x1 - x0); int incy = ami_abs(y1 - y0); int p, dx, dy; int x, y; int temp; int nx=width; int ny=height; if (incx>incy) {   if (x0>x1){     temp=x0; x0=x1; x1=temp;     temp=y0; y0=y1; y1=temp;   }   x=x0; y=y0;   p = 2*incy - incx;   dy = (y1>y0)? 1 : -1;   data[y*nx+x] = color;   do {     if (p<0) {       p += 2*incy;     } else {       p += 2*incy - 2*incx;       y += dy;     }     x++;     data[y*nx+x] = color;   } while (x<x1); } else {     if (y0>y1) {       temp=x0; x0=x1; x1=temp;       temp=y0; y0=y1; y1=temp;     }     x=x0; y=y0;     p = 2*incx - incy;     dx = (x1>x0)? 1 : -1;     data[y*nx+x] = color;     do {       if (p<0) {         p += 2*incx;       } else {         p += 2*incx - 2*incy;	 x += dx;       }       y++;       data[y*nx+x] = color;    } while (y<y1);  }}/************************************************************************//* FUNCION QUE CALCULA UNA ITERACION EN EL PROCEDIMIENTO DE ami_snake() *//************************************************************************/void ami_snake_iteracion(  float *imagen_level_set, /* IMAGEN DEL CONJUNTO DE NIVEL */  float *imagen_level_set_x, /* DERIVADA EN X DE LA IMAGEN DEL CONJUNTO DE NIVEL */  float *imagen_level_set_y, /* DERIVADA EN y DE LA IMAGEN DE CONJUNTO DE NIVEL */  float *imagen_g,           /* IMAGEN g = 1/sqrt(1+alfa*grad(I)^2) */  float *imagen_g_x,         /* DERIVADA EN X DE LA IMAGEN g */  float *imagen_g_y,         /* DERIVADA EN Y DE LA IMAGEN g */  int width2,int height2,    /* DIMENSIONES IMAGEN QUE CONTIENE AL POLIGONO */  float lambda,              /* PARAMETRO DE BALANCE ENTRE TERMINOS DE REGULARIDAD Y ATRACCION */  float *error,              /* INCREMENTO MAXIMO DEL VALOR DE LA IMAGEN CONJUNTO DE NIVEL EN 1 ITER */  float max_grad_g)          /* MAXIMO GRADIENTE IMAGEN g PARA CALCULAR EL dt A UTILIZAR */{  int i,j;  long m,size2=width2*height2;  float error_max=0; /* VARIABLE ALMACENAR CAMBIO MAXIMO AL PASAR DE ITERACION */  double ux,uy,ux2,uy2,uxuy,l0,l1,l2,l3,l4,paso,p_escalar,norma_g,norma_u,uxg,uyg;  float *imagen_paso;  /* HACEMOS UNA COPIA DE LA IMAGEN imagen_level_set EN imagen_paso */  ami_malloc1d(imagen_paso,float,size2);  for(m=0;m<size2;m++) imagen_paso[m]=imagen_level_set[m];  /* AJUSTAMOS EL INCREMENTO TEMPORAL dt EN BASE A lambda Y max_grad_g */  double dt=ami_snake_dt/(1.+0.5*lambda*max_grad_g);  /* CALCULAMOS EL GRADIENTE DE LA SUPERFICIE DE NIVEL */  ami_grad(imagen_level_set,width2,height2,imagen_level_set_x,imagen_level_set_y);  /* CALCULAMOS EL OPERADOR DIFERENCIAL DE DIFUSION */  for(i=1;i<height2-1;i++){   for(j=1;j<width2-1;j++){     m=i*width2+j;     ux=imagen_level_set_x[m];     uy=imagen_level_set_y[m];     ux2=ux*ux;     uy2=uy*uy;     if((ux2+uy2)>ami_snake_tol_grad2){ /* SI EL GRADIENTE ES PEQUENO NO HACEMOS NADA */       uxuy=ux*uy;       if(ux2>uy2){	   if(uxuy>0){	     l0=uxuy-ux2-ux2-uy2;	     l1=ux2+ux2-uy2-uxuy;	     l1+=l1;	     l2=uy2-uxuy;	     l2+=l2;	     l3=uxuy+uxuy+uxuy+uy2;	     l4=uy2-uxuy;	   }	   else{	     l0=-ux2-ux2-uy2-uxuy;	     l1=ux2+ux2-uy2+uxuy;	     l1+=l1;	     l2=uy2+uxuy;	     l2+=l2;	     l3=uxuy+uy2;	     l4=uy2-uxuy-uxuy-uxuy;	   }       }       else{	   if(uxuy>0){	     l0=-uy2-uy2-ux2+uxuy;	     l1=ux2-uxuy;	     l1+=l1;	     l2=uy2+uy2-ux2-uxuy;	     l2+=l2;	     l3=uxuy+uxuy+uxuy+ux2;	     l4=ux2-uxuy;	   }	   else{	     l0=-uy2-uy2-ux2-uxuy;	     l1=ux2+uxuy;	     l1+=l1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品视频网站| 91色视频在线| 欧美大肚乱孕交hd孕妇| 六月丁香综合在线视频| 欧美精品一区二区三区久久久| 青青草国产精品亚洲专区无| 精品久久久久久最新网址| 国产乱人伦偷精品视频免下载| 欧美v日韩v国产v| 91视频国产观看| 天天爽夜夜爽夜夜爽精品视频| 日韩视频一区二区三区| 成人国产亚洲欧美成人综合网| 午夜精品久久久久久| 国产校园另类小说区| 欧美日韩你懂得| 波多野结衣在线aⅴ中文字幕不卡| 亚洲日本一区二区三区| 欧美一区二区三区免费大片| 成人深夜视频在线观看| 午夜精品免费在线观看| 亚洲欧美日韩国产另类专区| 精品久久久影院| 日韩欧美久久一区| 欧美一a一片一级一片| 白白色 亚洲乱淫| 国产做a爰片久久毛片| 肉肉av福利一精品导航| 亚洲少妇最新在线视频| 最新国产の精品合集bt伙计| 精品国产成人系列| 91精品国产综合久久久久久 | 精品国产三级电影在线观看| 欧亚一区二区三区| 欧美三级电影在线观看| 色婷婷av久久久久久久| 在线视频国产一区| 欧美亚洲日本国产| 欧美巨大另类极品videosbest | 99久久国产综合精品女不卡| 国产一区在线看| 在线观看av一区二区| 另类小说色综合网站| 精品久久国产老人久久综合| 欧美三级日韩在线| 在线亚洲高清视频| 日本高清不卡aⅴ免费网站| 中文字幕不卡的av| 国产精品久久久久三级| 国产精品久久免费看| 玉足女爽爽91| 丝袜诱惑亚洲看片| 国产高清不卡二三区| 99久久er热在这里只有精品66| 91麻豆蜜桃一区二区三区| 欧美午夜在线观看| 欧美精品一区二区三区一线天视频| 国产人成亚洲第一网站在线播放| 精品日韩一区二区三区免费视频| 日韩欧美国产1| 国产精品福利av | 欧美三级在线视频| 日韩一级片网址| 亚洲激情在线激情| 精品影视av免费| 欧美美女黄视频| 综合网在线视频| 韩国av一区二区三区四区| 欧美视频一区二区| 亚洲精品福利视频网站| 国产精品一区二区久久不卡| 欧美夫妻性生活| 中文字幕在线视频一区| 韩国成人精品a∨在线观看| 欧美日韩成人综合在线一区二区| 1024成人网| 国产不卡高清在线观看视频| 日韩欧美一级在线播放| 视频一区中文字幕| 91久久精品网| 爽好多水快深点欧美视频| 在线观看成人小视频| 亚洲综合色视频| 97精品久久久午夜一区二区三区| 国产日韩欧美精品在线| 国产.精品.日韩.另类.中文.在线.播放| 91麻豆精品国产91久久久资源速度 | 九九精品一区二区| 国产嫩草影院久久久久| 丁香六月综合激情| 亚洲精品免费一二三区| 欧美日韩一区二区在线观看视频| 欧美一区午夜精品| 亚洲午夜av在线| 国产精品视频看| 91精品国产品国语在线不卡| 国内不卡的二区三区中文字幕| 国产精品美女久久久久久久久| 欧美三级资源在线| 成人午夜激情在线| 美女网站一区二区| 亚洲伦理在线精品| 国产人成亚洲第一网站在线播放| 91.xcao| 7777精品久久久大香线蕉| 成人黄色a**站在线观看| 免费在线观看日韩欧美| 夜夜操天天操亚洲| 中文字幕一区视频| 欧美国产精品专区| 久久夜色精品一区| 日韩一区二区免费在线电影| 这里只有精品99re| 欧美视频在线一区二区三区| 欧美福利视频导航| 在线不卡中文字幕播放| 精品一区二区三区不卡| 国产欧美日韩卡一| 在线观看亚洲a| 国产一区二区精品在线观看| 久久先锋影音av鲁色资源网| 激情五月激情综合网| 亚洲在线视频网站| 最新国产の精品合集bt伙计| 国产欧美综合在线| 精品日韩在线一区| 久久综合视频网| 国产日韩成人精品| 亚洲精品国产无天堂网2021| 亚洲国产中文字幕在线视频综合| 国产精品国产自产拍高清av| 国产日产欧美精品一区二区三区| 国产片一区二区| 亚洲h动漫在线| 国产成人在线网站| 99在线视频精品| 欧美视频自拍偷拍| 精品国产百合女同互慰| 一区二区三区四区av| 美女mm1313爽爽久久久蜜臀| 成人午夜激情影院| 91精品在线免费| 亚洲女同一区二区| 国产精品中文字幕日韩精品| 99精品久久久久久| 91精品国产色综合久久不卡蜜臀| 精品久久久久一区二区国产| 亚洲综合色婷婷| 日本乱码高清不卡字幕| 欧美成人一区二区三区片免费 | 国产成a人亚洲精品| 日韩久久久精品| 亚洲成人动漫一区| 91网站在线观看视频| 2欧美一区二区三区在线观看视频| 亚洲成av人影院在线观看网| 欧亚一区二区三区| 亚洲色图在线看| 国产精品888| 国产视频一区在线观看| 国产精品一区二区在线播放| 久久综合九色综合97_久久久| 日韩精品一二区| 日韩你懂的在线观看| 美女脱光内衣内裤视频久久影院| 欧美三区在线观看| 五月天激情综合网| 精品女同一区二区| 激情文学综合插| 制服.丝袜.亚洲.中文.综合| 亚洲成人精品一区二区| 在线成人小视频| 国产美女一区二区| 2024国产精品| 成人在线一区二区三区| 自拍偷拍国产精品| 精品视频在线看| 精彩视频一区二区| 亚洲色图欧美激情| 欧美色倩网站大全免费| 久久精品国产**网站演员| 国产网红主播福利一区二区| 99久久综合色| 天堂在线亚洲视频| 亚洲免费三区一区二区| 精品91自产拍在线观看一区| 99久久精品费精品国产一区二区| 石原莉奈在线亚洲三区| 中文字幕日韩一区二区| 91精品免费在线| av中文字幕不卡| 国产精品一区二区三区乱码 | 91麻豆成人久久精品二区三区| 一区二区三区高清不卡| 久久精品夜夜夜夜久久| 日韩三级.com| 欧美一区二区三区播放老司机| 99精品欧美一区二区三区综合在线| 蜜桃av噜噜一区二区三区小说| 曰韩精品一区二区|