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

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

?? ang2.c

?? 3DMEDLIB - 三維醫學圖像開發源程序庫及范例
?? C
字號:
/*********************** ang2.c **************************************

	  3-D Reconstruction of Medical Images

	Three Dimensional Reconstruction Of Medical
	Images from Serial Slices - CT, MRI, Ultrasound


   These programs process a set of slices images (scans) for one
   patient. It outputs two sets of files containing nine predefined
   views of bony surfaces. One set contains distance values and
   the other gradient values.

   The distance values are used as 3-D spatial topographic surface
   coordinate maps for geometrical analysis of the scanned object.

   The gradient values are used for rendering the surface maps on
   CRT displays for subjective viewing where perception of small
   surface details is important.

	Daniel Geist, B.S.
	Michael W. Vannier, M.D.

	Mallinckrodt Institute of Radiology
	Washington University School of Medicine
	510 S. Kingshighway Blvd.
	St. Louis, Mo. 63110

	These programs may be copied and used freely for non-commercial
	purposes by developers with inclusion of this notice.


********************************************************************/
#include <stdio.h>
#include <math.h>
#define FLOAT_LINE 1024
#define PI 3.141592653
/* the structure below is the data for a point on the surface projected
   on the view plane                        */
typedef struct DIS_REC {
      float dist;            /*distance from view plane */
      int indXY;             /* index of data on main axis view */
      char XY;               /* Which main axis view obtained from (X or Y)*/
};
struct DIS_REC distances[256]; /* one projected line */ 
int NLINES,IXmax,IYmax;
float THETA,cosTheta,sinTheta,tgnTheta;
float fxbuf[3][256],fybuf[3][256];/* input buffers */
/*  output files  */
char *fng="gang.out",*fnd="dang.out";
succ(i)
int i;
{return(i==2?0:i+1);}
prev(i)
int i;
{return(i==0?2:i-1);}
/* PUTD - fill a DIS_REC with values */
putd(pdis,D,i,xy_sym)
struct DIS_REC *pdis;
float D;
int i,xy_sym;
{ pdis->dist=D;
  pdis->indXY=i;
  pdis->XY=xy_sym;
}
/* take one line from X and Y views and create a projrcted line */
getdistances(linex,liney)
float linex[],liney[];
{ int i,IND;
  float D;
  for(i=0;i<256;i++) distances[i].XY=0;
  /* project Y-data onto image line */
  for(i=0;i<256;i++){
       IND=(255-i)*cosTheta-liney[i]*sinTheta;
       D=liney[i]/cosTheta-(255-i-liney[i]*tgnTheta)*sinTheta;
       IND=IXmax-IND;
       if((IND>=0) && (IND<256)){
           if(distances[IND].XY==0)putd(&distances[IND],D,i,1);
           else if(distances[IND].dist>D)putd(&distances[IND],D,i,1);
       }
  }
  /*project X-data onto image plane */
  for(i=0;i<256;i++){
       IND=(255-i)*sinTheta-linex[i]*cosTheta;
       D=linex[i]/sinTheta-(255-i-linex[i]/tgnTheta)*cosTheta;
       IND+=IXmax;
       if((IND>=0) && (IND<256)){
           if(distances[IND].XY==0)putd(&distances[IND],D,i,2);
           else if(distances[IND].dist>D)putd(&distances[IND],D,i,2);
       }
  }
  /* fill holes due to low resolution */
  for(i=1;i<255;i++)if( (distances[i].XY==0) && (distances[i+1].XY!=0) &&
            (distances[i-1].XY!=0))
             putd(&distances[i],distances[i-1].dist,
                   distances[i-1].indXY,(int)distances[i-1].XY);
}
/* returns gradient shade in point given the variations of the surface */
unsigned char grad(x1,x2,y1,y2,z1,z2,x_fac,y_fac,z_fac)
float x1,x2,y1,y2,z1,z2;
int x_fac,y_fac,z_fac;
{float gx,gy,gz,G,nx,ny;
 unsigned char gxint;
     /* components of gradient */
  gx=(x2-x1)/x_fac;
  gy=(y2-y1)/y_fac;
  gz=(z1-z2)/z_fac;
  G=sqrt(gx*gx+gy*gy+gz*gz);
     /*compute nx,ny normalized x,y component of gradient */
  nx=gx/G;
  ny=gy/G;
  gxint=255*(nx*sinTheta+ny*cosTheta)+0.5; /*scale gradient shade by 256 */
  return(gxint);
}
doline(linex,linex1,liney,linex2,liney1,liney2,z_fac,fg,fd)
float linex[],linex1[],linex2[],liney[],liney1[],liney2[];
int z_fac;
FILE *fg,*fd;
{ int i;
  unsigned char lined[256],lineg[256];
      /* empty bit on image line */
  for(i=0;i<256;i++)if(distances[i].XY==0)lineg[i]=lined[i]=0;
  else{
      lined[i]=(distances[i].dist<256)?255-distances[i].dist:0;
      /* bit on image line projected from Y view */
      if(distances[i].XY==1) switch(distances[i].indXY){
           case 0:lineg[i]=
                   grad(liney[0],liney[1],(float)0,(float)2,
                        liney1[0],liney2[0],1,2,z_fac);
                  break;
           case 255:lineg[i]=
                    grad(liney[254],liney[255],(float)0,(float)2,
                         liney1[255],liney2[255],1,2,z_fac);
                  break;
           default:lineg[i]=
                   grad(liney[distances[i].indXY-1],
                        liney[distances[i].indXY+1],(float)0,(float)2,
                          liney1[distances[i].indXY],
                          liney2[distances[i].indXY],2,2,z_fac); 
                  break;
      }
      /* bit on image line projected from X view */
      else switch(distances[i].indXY){
           case 0:lineg[i]=
                   grad((float)0,(float)2,linex[0],linex[1],
                        linex1[0],linex2[0],2,1,z_fac);
                  break;
           case 255:lineg[i]=
                    grad((float)0,(float)2,linex[254],linex[255],
                         linex1[255],linex2[255],2,1,z_fac);
                  break;
           default:lineg[i]=
                   grad((float)0,(float)2,linex[distances[i].indXY-1],
                        linex[distances[i].indXY+1],
                          linex1[distances[i].indXY],
                          linex2[distances[i].indXY],2,1,z_fac);
                  break;
      }
  }
  fwrite(lineg,1,256,fg);
  fwrite(lined,1,256,fd);
}
doviews()
{FILE *fg,*fd,*fx,*fy;
 int z,i,j,k,mid;
 mid=1;
 fd=fopen(fnd,"wb");
 fg=fopen(fng,"wb");
 fx=fopen("xdis.dat","rb");
 fy=fopen("ydis.dat","rb");
 fread(fxbuf,1,3*FLOAT_LINE,fx);
 fread(fybuf,1,3*FLOAT_LINE,fy);
 /* do first line (forward differene)*/
 getdistances(fxbuf[0],fybuf[0]);
 doline(fxbuf[0],fxbuf[0],fxbuf[1],fybuf[0],fybuf[0],fybuf[1],1,fg,fd);
 /* do middle lines (central diffrence) */
 printf("Begining computation of  views\n");
 for(z=0;z<(NLINES-2);z++){      /*for each slice */
     getdistances(fxbuf[mid],fybuf[mid]);
     doline(fxbuf[mid],fxbuf[prev(mid)],fxbuf[succ(mid)],
            fybuf[mid],fybuf[prev(mid)],fybuf[succ(mid)],2,fg,fd);
     fread(fxbuf[prev(mid)],1,FLOAT_LINE,fx);
     fread(fybuf[prev(mid)],1,FLOAT_LINE,fy);
     mid=succ(mid);
     printf(" did %d \n",z);
 }
 /* do last line (backward difference)*/
 getdistances(fxbuf[mid],fybuf[mid]);
 doline(fxbuf[mid],fxbuf[prev(mid)],fxbuf[mid],
            fybuf[mid],fybuf[prev(mid)],fybuf[mid],1,fg,fd);
 fclose(fg);
 fclose(fd);
 fclose(fx);
 fclose(fy);
}
/**********************************************************/
/**** MAIN ***** MAIN ***** MAIN ***** MAIN ***** MAIN ****/
/**********************************************************/
main()
{
 /* first get some parameters from user */
 printf("Enter angle: ");
 scanf("%f",&THETA);
 IXmax=255*(1-THETA/90);
 IYmax=255*(THETA/90);
 THETA*=PI/180;
 sinTheta=sin(THETA);
 cosTheta=cos(THETA);
 tgnTheta=sinTheta/cosTheta;
 printf("Enter number of lines: ");
 scanf("%d",&NLINES);
 doviews();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品伦理在线| 国产午夜亚洲精品不卡| 欧美吞精做爰啪啪高潮| 精品视频免费看| 精品对白一区国产伦| 久久一区二区视频| 亚洲欧洲日韩综合一区二区| 伊人色综合久久天天| 国产精品私人影院| 亚洲电影第三页| 日日摸夜夜添夜夜添国产精品| 日韩高清欧美激情| 国产福利一区二区三区视频在线| 91丨九色丨尤物| 欧美成人a视频| 亚洲欧美激情一区二区| 麻豆久久久久久| 欧美日韩综合不卡| 国产精品国产三级国产三级人妇| 麻豆精品一二三| 欧美在线观看视频一区二区三区| 亚洲国产高清在线观看视频| 日韩电影在线免费观看| 97久久超碰国产精品电影| 日韩视频免费观看高清完整版在线观看 | 国产精品网曝门| 免费成人av资源网| 欧美色国产精品| 亚洲视频一二三区| 国产成人精品在线看| 欧美高清www午色夜在线视频| 中文字幕日韩欧美一区二区三区| 免费的成人av| 欧美色视频一区| 日韩理论片中文av| 成人免费视频国产在线观看| 精品日产卡一卡二卡麻豆| 亚洲成人激情综合网| 色天天综合久久久久综合片| 国产精品剧情在线亚洲| 国产成人综合网站| 精品国产99国产精品| 日本成人在线看| 91麻豆精品91久久久久久清纯| 亚洲成人www| 成人av电影免费在线播放| 久久久一区二区三区| 激情丁香综合五月| 精品国产伦一区二区三区观看体验 | 中文字幕第一页久久| 韩日欧美一区二区三区| 日韩午夜av一区| 久久黄色级2电影| 欧美少妇一区二区| 中文字幕欧美日韩一区| 精品影视av免费| 日韩精品一区二区三区三区免费| 日本美女一区二区| 精品久久99ma| 国产毛片精品一区| 久久久久88色偷偷免费| 高清视频一区二区| 成人免费一区二区三区视频| 91影视在线播放| 亚洲va欧美va天堂v国产综合| 色国产综合视频| 亚洲国产乱码最新视频| 欧美丰满嫩嫩电影| 美女视频黄 久久| 欧美v亚洲v综合ⅴ国产v| 国产成人精品亚洲日本在线桃色| 中国色在线观看另类| 一本一道波多野结衣一区二区| 亚洲一区二区三区四区在线观看| 欧美久久高跟鞋激| 蜜桃久久久久久| 国产精品美女久久久久高潮| 色哟哟一区二区在线观看| 亚洲第一会所有码转帖| 久久先锋影音av| 色综合久久久久久久| 久久激情综合网| 亚洲欧洲性图库| 欧美一区二区三区四区久久| 香蕉加勒比综合久久| 欧洲亚洲精品在线| 免费一级欧美片在线观看| 国产精品久久久久久久久久免费看| 激情丁香综合五月| 亚洲精品视频一区二区| 日韩免费在线观看| av综合在线播放| 日韩有码一区二区三区| 中文字幕av一区二区三区高 | 国产清纯在线一区二区www| 91年精品国产| 精品亚洲成a人在线观看| 欧美激情在线一区二区三区| 91精品国产91久久久久久最新毛片| 国产成人综合在线| 日本在线不卡一区| 亚洲日本护士毛茸茸| 欧美日韩国产一区| 激情丁香综合五月| 中文字幕不卡在线| 99re8在线精品视频免费播放| 亚洲美女淫视频| 国产精品三级在线观看| 制服丝袜一区二区三区| 99精品视频在线观看| 久久97超碰国产精品超碰| 亚洲国产毛片aaaaa无费看| 国产精品毛片a∨一区二区三区| 91精品免费观看| 欧美中文字幕亚洲一区二区va在线 | 亚洲精品菠萝久久久久久久| 26uuu国产一区二区三区| 欧美精品在线一区二区| 91高清在线观看| 99在线视频精品| 国产999精品久久久久久绿帽| 日本午夜一本久久久综合| 亚洲精品亚洲人成人网在线播放| 中文字幕av一区二区三区免费看| 久久久精品综合| 久久免费视频色| 久久无码av三级| 久久精品一区四区| 久久久久99精品一区| 久久久一区二区| 久久精品一二三| 国产日韩欧美精品电影三级在线| 精品88久久久久88久久久| 日韩一区二区免费电影| 日韩网站在线看片你懂的| 欧美一区二区三区播放老司机| 欧美伦理视频网站| 欧美大片顶级少妇| 欧美剧在线免费观看网站| 在线观看成人免费视频| 色狠狠一区二区三区香蕉| 欧美精品第1页| 91在线小视频| 国产成人精品免费看| 不卡的电影网站| 色婷婷国产精品| 欧美一区国产二区| 久久免费的精品国产v∧| 国产午夜三级一区二区三| 中文字幕一区二区三区乱码在线 | 成人中文字幕电影| 北岛玲一区二区三区四区| 色欲综合视频天天天| 欧美色综合久久| 日韩女优制服丝袜电影| 国产亚洲成aⅴ人片在线观看 | 一二三区精品福利视频| 五月综合激情日本mⅴ| 麻豆精品在线看| 国产二区国产一区在线观看| 国产电影一区二区三区| 国产99久久久国产精品免费看 | 日韩欧美在线网站| 久久品道一品道久久精品| 综合欧美亚洲日本| 日韩av在线免费观看不卡| 国产馆精品极品| 在线观看日韩精品| 国产亚洲精品超碰| 亚洲摸摸操操av| 免费成人小视频| 色综合久久久网| 久久精品夜色噜噜亚洲a∨| 亚洲国产精品综合小说图片区| 国内成人精品2018免费看| 国产激情精品久久久第一区二区| 色综合色狠狠综合色| 日韩欧美在线1卡| 亚洲一区二区三区四区在线| 韩国一区二区视频| 欧美日韩成人综合天天影院| 国产精品久久久久久亚洲伦 | 国产精品毛片久久久久久久| 亚洲激情网站免费观看| 久久黄色级2电影| 欧美一区二区不卡视频| 亚洲精品成人少妇| 大尺度一区二区| 欧美精品一区二区三区蜜桃视频 | 精品国产乱码久久久久久浪潮 | 成人99免费视频| 日本午夜一区二区| 国产精品乱人伦| 在线欧美日韩国产| 精品综合久久久久久8888| 成人国产精品免费观看| 精品久久人人做人人爰| 亚洲成人免费影院| 一本大道综合伊人精品热热| 国产精品久久福利|