亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产精品五月天| 国产精品1区二区.| 国产精品99久久久久久似苏梦涵| 99精品国产91久久久久久| 欧美日韩成人在线| 亚洲精品va在线观看| 国产乱人伦精品一区二区在线观看| 欧美日韩国产在线播放网站| 国产精品国产三级国产a| 狠狠色丁香婷婷综合| 欧美理论电影在线| 亚洲电影你懂得| 色综合久久久久综合| 亚洲欧洲色图综合| 丁香激情综合国产| 欧美极品美女视频| 国产在线精品视频| 久久久精品中文字幕麻豆发布| 天堂在线亚洲视频| 欧美中文字幕一区二区三区| 综合色中文字幕| 成人免费观看av| 国产精品久久三| 成人av在线资源网站| 日本一区二区成人| 国产成人综合网| 国产亚洲精品bt天堂精选| 国模冰冰炮一区二区| 亚洲自拍欧美精品| 91美女福利视频| 亚洲色图丝袜美腿| 91福利在线导航| 亚洲影视在线观看| 欧美午夜精品久久久久久孕妇 | 色噜噜夜夜夜综合网| 国产精品精品国产色婷婷| 99re这里只有精品首页| 一区二区在线免费观看| 91福利视频在线| 日韩av电影免费观看高清完整版在线观看| 欧美日韩中文国产| 免费人成黄页网站在线一区二区| 欧美xxx久久| 丁香亚洲综合激情啪啪综合| 国产精品久久久久桃色tv| 在线视频你懂得一区| 日韩精品一二三| 2024国产精品视频| av成人免费在线| 亚洲成人动漫精品| 2024国产精品| 一本一道波多野结衣一区二区| 亚洲国产精品久久久久婷婷884| 日韩一区二区三区电影在线观看| 国产精品中文有码| 亚洲乱码一区二区三区在线观看| 欧美日韩亚州综合| 国产成人av电影在线观看| 亚洲男人的天堂av| 欧美一区二区三区思思人| 国产一区在线精品| 一级日本不卡的影视| 精品粉嫩超白一线天av| 99久久久久免费精品国产| 婷婷中文字幕一区三区| 久久久久成人黄色影片| 欧美日韩一区二区三区免费看| 免费成人结看片| 亚洲免费在线视频| 久久亚洲私人国产精品va媚药| 一本一道久久a久久精品| 精品一区二区三区在线视频| 亚洲欧美成aⅴ人在线观看| 日韩欧美综合在线| 色爱区综合激月婷婷| 韩日欧美一区二区三区| 亚洲国产综合91精品麻豆| 久久久久久影视| 91精品国产综合久久久久久| 不卡av电影在线播放| 久久 天天综合| 亚洲一二三四在线| 欧美日韩国产色站一区二区三区| 国产99久久久国产精品| 精品无码三级在线观看视频| 国产精品九色蝌蚪自拍| 亚洲人精品一区| 久久伊99综合婷婷久久伊| 色呦呦一区二区三区| 国产aⅴ综合色| 久久精品久久综合| 丝袜美腿亚洲一区二区图片| 亚洲精品免费在线观看| 亚洲国产精品精华液2区45| 精品免费99久久| 日韩一级成人av| 91麻豆精品久久久久蜜臀 | 麻豆一区二区99久久久久| 亚洲综合视频在线| 亚洲九九爱视频| 国产精品麻豆久久久| 亚洲国产成人一区二区三区| 26uuu精品一区二区三区四区在线| 在线播放一区二区三区| 欧美日韩免费一区二区三区视频| 色综合久久久久综合99| 91在线观看成人| 91女人视频在线观看| 不卡av在线网| 色婷婷av一区| 欧美日韩免费一区二区三区 | 色激情天天射综合网| 99re这里只有精品视频首页| 成人黄页在线观看| 成人精品免费网站| aaa国产一区| 91久久线看在观草草青青| 91视频在线看| 欧美午夜一区二区三区| 欧美精品乱人伦久久久久久| 欧美高清激情brazzers| 欧美一区二区啪啪| xnxx国产精品| 亚洲国产精品ⅴa在线观看| 中文幕一区二区三区久久蜜桃| 国产精品久久看| 亚洲精品少妇30p| 日韩电影免费在线| 裸体在线国模精品偷拍| 国产精品一区久久久久| 不卡视频一二三四| 欧洲精品一区二区| 日韩一区二区三区四区五区六区 | 国产v日产∨综合v精品视频| 成人av一区二区三区| 国产精品丝袜黑色高跟| 91啦中文在线观看| www.亚洲色图| 欧美精品一级二级三级| 精品国产123| **性色生活片久久毛片| 午夜电影一区二区| 国产夫妻精品视频| 在线观看成人小视频| 欧美日韩一本到| 国产日韩一级二级三级| 亚洲午夜精品17c| 国产一区二区三区| 91小视频在线观看| 日韩免费视频一区| 亚洲另类春色国产| 久久精品国产久精国产爱| 97超碰欧美中文字幕| 日韩欧美国产wwwww| 亚洲色图都市小说| 老司机精品视频线观看86| 一本一道波多野结衣一区二区| 欧美一三区三区四区免费在线看 | 亚洲精品国产一区二区精华液| 天堂av在线一区| 国产成人夜色高潮福利影视| 在线国产电影不卡| 国产日韩欧美在线一区| 婷婷中文字幕综合| aaa欧美日韩| 国产日韩欧美精品电影三级在线| 夜夜嗨av一区二区三区四季av| 国产精品综合视频| 8x福利精品第一导航| 另类小说欧美激情| 欧美综合久久久| 欧美高清在线一区二区| 蜜桃av一区二区三区| 欧美无乱码久久久免费午夜一区| 国产欧美日韩视频一区二区| 麻豆成人久久精品二区三区小说| 欧美亚洲综合久久| 中文字幕日韩欧美一区二区三区| 久久精品国产澳门| 欧美乱妇15p| 亚洲成av人影院| 日本韩国精品一区二区在线观看| 国产亚洲一区二区三区四区| 日本欧美大码aⅴ在线播放| 欧美少妇bbb| 亚洲国产一区二区三区青草影视 | 亚洲图片自拍偷拍| 色婷婷国产精品久久包臀| 国产精品美女www爽爽爽| 国产在线播放一区三区四| 日韩欧美一区二区在线视频| 午夜视频在线观看一区| 91福利在线播放| 亚洲电影中文字幕在线观看| 91免费在线播放| 亚洲欧美激情插| 欧洲精品在线观看| 亚洲国产日韩精品| 欧美精品免费视频| 日本91福利区|