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

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

?? ang1.c

?? 3DMEDLIB - 三維醫學圖像開發源程序庫及范例
?? C
?? 第 1 頁 / 共 2 頁
字號:
/********************  ang.c  ******************************

   Three dimensional surface reconstruction program

   This program assumes that the views from the main axis
   directions were done thus an angle view between two main
   axis views can be created from the depth_code viewa(floating
   point). 

 Daniel Geist
 Michael W. Vannier

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

 Note:  This program is intended for the private non-commercial
 use of interested individuals to provide a fuller explanation of
 the algorithms described in "Three dimensional reconstruction in
 Medical Imaging" by D. Geist and M. Vannier.

 1988

 A.Wallin
 -Command line input
 -Threshold on gradient shading, background not used for gradient.
 -Combination of gradient and distance is possible.
 -Distance or gradient image turned off
 -Straight views (0, 90, 180 etc) possible. (0 = ydis2.dat, 90 = xdis1.dat
  180 = ydis1.dat, 270 = xdis2.dat)
 -Incremental views possible
 -Views always head up
 *************************************************************/

#include <stdio.h>
#include <math.h>
#include <ctype.h>
#define FLOAT_LINE 256*sizeof(float)
#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,xinc,yinc;
int (*xdir)(),(*ydir)();
double THETA,cosTheta,sinTheta,tgnTheta;
float fxbuf[3][256],fybuf[3][256];/* input buffers */

char *usestr = "Usage: ang [-a] [-r] [-g] [-n(d|g)] [-h] [-d]";
float GRAD_THRESHOLD = 10.0;
int  number_pic = 1;
int  dispmode = 3;
float dist_weight;

/*  output files  */
char fng[13],fnd[13],xfile[13],yfile[13],DR;

succ(i)
int i;
{return(i==2?0:i+1);}

prev(i)
int i;
{return(i==0?2:i-1);}

forward(i)
int i;
{ return(i); }

backward(i,start)
int i;
{return(start-i); }

/* 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,X,Y;
  float D;
  float Dhole;
  float INDf;
  int   holex, holey;
  float dx1, dx2, dx;
  float dy1, dy2, dy;
  float temp1, temp2;

  for(i=0;i<256;i++) distances[i].XY=0;
  /* project Y-data onto image line */
  for(i=0;i<256;i++) if(liney[i] < 256.0){
       X=(*ydir)(i,255);
       INDf=IXmax -(X*sinTheta-liney[i]*cosTheta);
       D=liney[i]/sinTheta+(X-liney[i]/tgnTheta)*cosTheta;
       /*  Do the two nearest neighbours */
       IND = INDf;
       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);
       }
       IND = INDf + 0.5;
       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++) if(linex[i] < 256.0){
       Y=(*xdir)(i,255);
       D=Y/sinTheta+(linex[i]-Y/tgnTheta)*cosTheta;
       INDf=IXmax-(linex[i]*sinTheta-Y*cosTheta);
       /*  Do the two nearest neighbours */
       IND = INDf;
       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);
       }
       IND = INDf + 0.5;
       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 */
  if (dispmode & 4)
    /* test neighbours */
    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*cosTheta+ny*sinTheta)+0.5; /*scale gradient shade by 256 */
  return(gxint);
}

doline(linex,linex1,linex2,liney,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];
  float x1, x2, y1, y2, z1, z2;
  int   x_fac, y_fac;

      /* empty bit on image line */
  for(i=0;i<256;i++)
    if (distances[i].XY==0)
      lineg[i]=lined[i]=0;
    else {
      if (dispmode & 1)
        lined[i]=(distances[i].dist<256)?255-distances[i].dist+0.5:0;
      /* bit on image line projected from Y view */
      if (dispmode & 2) {
        if(distances[i].XY==1) switch(distances[i].indXY){
           case 0:
             lineg[i]=
                   grad(liney[1]*yinc,liney[0]*yinc,(float)0,(float)2,
                        liney1[0],liney2[0],1,2,z_fac);
             break;
           case 255:
             lineg[i]=
                    grad(liney[255]*yinc,liney[254]*yinc,(float)0,(float)2,
                         liney1[255],liney2[255],1,2,z_fac);
             break;
           default:
             x1 = liney[distances[i].indXY+yinc];
             x2 = liney[distances[i].indXY-yinc];
             x_fac = 2;
             y1 = 0.0;
             y2 = 2.0;
             y_fac = 2;
             z1 = liney1[distances[i].indXY];
             z2 = liney2[distances[i].indXY];
             if (x1 > 255.0) {
               x1 = liney[distances[i].indXY];
               x_fac = 1;
             }
             else if (x2 > 255.0) {
               x2 = liney[distances[i].indXY];
               x_fac = 1;
             }
             else if (fabs(x2 - x1) > GRAD_THRESHOLD) {
               if (fabs(liney[distances[i].indXY] - x1) < GRAD_THRESHOLD/2.0 &&
                   x2 < liney[distances[i].indXY]) {
                 x2 = liney[distances[i].indXY];
                 x_fac = 1;
               }
               else if (fabs(x2 - liney[distances[i].indXY]) <
                        GRAD_THRESHOLD/2.0 && x1 < liney[distances[i].indXY]) {
                 x1 = liney[distances[i].indXY];
                 x_fac = 1;
               }
             }
             if (z1 > 255.0) {
               z1 = liney[distances[i].indXY];
               z_fac = 1;
             }
             else if (z2 > 255.0) {
               z2 = liney[distances[i].indXY];
               z_fac = 1;
             }
             else if (fabs(z2 - z1) > GRAD_THRESHOLD) {
               if (fabs(liney[distances[i].indXY] - z1) < GRAD_THRESHOLD/2.0 &&
                 z2 < liney[distances[i].indXY]) {
                 z2 = liney[distances[i].indXY];
                 z_fac = 1;
               }
               else if (fabs(z2 - liney[distances[i].indXY]) <
                        GRAD_THRESHOLD/2.0 && z1 < liney[distances[i].indXY]) {
                 z1 = liney[distances[i].indXY];
                 z_fac = 1;
               }
             }
             lineg[i]= grad(x1, x2, y1, y2, z1, z2, x_fac, y_fac, 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[1]*xinc,linex[0]*xinc,
                        linex1[0],linex2[0],2,1,z_fac);
             break;
           case 255:
             lineg[i]=
                    grad((float)0,(float)2,linex[255]*xinc,linex[254]*xinc,
                         linex1[255],linex2[255],2,1,z_fac);
             break;
           default:
             x1 = 0.0;
             x2 = 2.0;
             x_fac = 2;
             y1 = linex[distances[i].indXY+xinc];
             y2 = linex[distances[i].indXY-xinc];
             y_fac = 2;
             z1 = linex1[distances[i].indXY];
             z2 = linex2[distances[i].indXY];
             if (y1 > 255.0) {
               y1 = linex[distances[i].indXY];
               y_fac = 1;
             }
             else if (y2 > 255.0) {
               y2 = linex[distances[i].indXY];
               y_fac = 1;
             }
             else if (fabs(y2 - y1) > GRAD_THRESHOLD) {
               if (fabs(linex[distances[i].indXY] - y1) < GRAD_THRESHOLD/2.0 &&
                 y2 < linex[distances[i].indXY]) {
                 y2 = linex[distances[i].indXY];
                 y_fac = 1;
               }
               else if (fabs(y2 - linex[distances[i].indXY]) <
                        GRAD_THRESHOLD/2.0 && y1 < linex[distances[i].indXY]) {
                 y1 = linex[distances[i].indXY];
                 y_fac = 1;
               }
             }
             if (z1 > 255.0) {
               z1 = linex[distances[i].indXY];
               z_fac = 1;
             }
             else if (z2 > 255.0) {
               z2 = linex[distances[i].indXY];
               z_fac = 1;
             }
             else if (fabs(z2 - z1) > GRAD_THRESHOLD) {
               if (fabs(linex[distances[i].indXY] - z1) < GRAD_THRESHOLD/2.0 &&
                 z2 < linex[distances[i].indXY]) {
                 z2 = linex[distances[i].indXY];
                 z_fac = 1;
               }
               else if (fabs(z2 - linex[distances[i].indXY]) <
                        GRAD_THRESHOLD/2.0 && z1 < linex[distances[i].indXY]) {
                 z1 = linex[distances[i].indXY];
                 z_fac = 1;
               }
             }
             lineg[i]= grad(x1, x2, y1, y2, z1, z2, x_fac, y_fac, z_fac);
             break;
          }
        if (dispmode & 8) {
          /* combine with distance */
          lineg[i] = (float) lineg[i] * (1.0 - dist_weight) +
                     ((distances[i].dist < 255.0) ? 
                        (255.0-distances[i].dist) : 0.0) * dist_weight;
        }

      }
  }

  if (fg != NULL) fwrite(lineg,sizeof(unsigned char),256,fg);
  if (fd != NULL) fwrite(lined,sizeof(unsigned char),256,fd);
}





dostrline(linex,linex1,linex2,z_fac,fg,fd)
float linex[],linex1[],linex2[];
int z_fac;
FILE *fg,*fd;

{ int i;
  unsigned char lined[256],lineg[256];
  float x1, x2, y1, y2, z1, z2;
  int   x_fac, y_fac;

  if(linex[0] > 255.0)
    lineg[0] = lined[0] = 0;
  else {
    if (dispmode & 1)
      lined[0] = 255.5 - linex[0];
    if (dispmode & 2) {
      lineg[0] = grad(0.0, 2.0, linex[0], linex[1], linex1[0], linex2[0],
                      1, 2, z_fac);
      if (dispmode & 8) {
        lineg[i] = (float) lineg[0] * (1.0 - dist_weight) + 
                   (255.0-linex[0]) * dist_weight;
        }
    }
   }

   for(i = 1; i < 255; i++)
    if(linex[i] > 255.0)
      lineg[i] = lined[i] = 0;
    else {
      if (dispmode & 1)
	    lined[i] = 255.5 - linex[i];
      if (dispmode & 2) {
        x1 = 0.0;
        x2 = 2.0;
        x_fac = 2;
        y1 = linex[i-1];
        y2 = linex[i+1];
        y_fac = 2;
        z1 = linex1[i];
        z2 = linex2[i];
        if (y1 > 255.0) {
          y1 = linex[i];
          y_fac = 1;
        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91论坛在线播放| 国产一区二区三区视频在线播放| 99久久久精品| 五月综合激情婷婷六月色窝| 欧美r级在线观看| 色哟哟日韩精品| 国产一区二区三区av电影 | 婷婷成人激情在线网| 日本免费在线视频不卡一不卡二| 欧美精品aⅴ在线视频| 亚洲另类中文字| 欧美日韩色一区| 久久99精品国产.久久久久| 精品国产第一区二区三区观看体验| 久久国产婷婷国产香蕉| 久久男人中文字幕资源站| 国产精品99久久久久久有的能看| 欧美高清在线视频| 欧美偷拍一区二区| 亚洲国产va精品久久久不卡综合| 成人午夜视频福利| 亚洲三级小视频| 一本大道久久a久久综合婷婷| 一区二区三区中文免费| 一区二区三区美女| 精品一区二区三区视频在线观看| 欧美日韩在线播放一区| 洋洋成人永久网站入口| 欧美狂野另类xxxxoooo| 国产一区二区三区免费看| 亚洲精品乱码久久久久久日本蜜臀| 精品日韩在线观看| 91精品国产欧美一区二区成人| 欧美日本免费一区二区三区| 欧美日韩一区视频| 日韩一区二区精品在线观看| 国产精品欧美极品| 亚洲伦理在线精品| 奇米精品一区二区三区在线观看一| 婷婷久久综合九色综合绿巨人| 香蕉影视欧美成人| 国产一区二区伦理| 在线观看免费亚洲| 欧美一级片在线观看| 欧美成人欧美edvon| 欧美日韩精品三区| 在线观看视频一区| 91网站在线观看视频| 国产真实乱子伦精品视频| 麻豆精品精品国产自在97香蕉 | 精品一区二区三区视频| 亚洲欧美视频一区| 中文字幕av一区二区三区| 中文字幕一区视频| 亚洲欧美另类在线| 一区二区三区欧美| 一区在线播放视频| 久久久99精品免费观看| 在线看不卡av| 成人国产亚洲欧美成人综合网| 成人毛片视频在线观看| 精品噜噜噜噜久久久久久久久试看| 精品福利一区二区三区免费视频| 麻豆91在线播放免费| 国产精品无码永久免费888| 国产日韩欧美高清| 亚洲码国产岛国毛片在线| 午夜av电影一区| 国产99久久久精品| 国产一区在线观看麻豆| 99热在这里有精品免费| 国产女主播视频一区二区| 亚洲风情在线资源站| 精品1区2区3区| 亚洲欧美激情插| 色狠狠综合天天综合综合| 亚洲欧美日韩成人高清在线一区| 粉嫩av一区二区三区在线播放| 国产欧美精品一区二区三区四区 | 亚洲综合丝袜美腿| 九色porny丨国产精品| 99视频精品全部免费在线| 欧美一区二区播放| 亚洲欧洲色图综合| 国产在线播放一区| 91精品国产福利在线观看| 日本一区二区三区久久久久久久久不 | 欧美一级欧美一级在线播放| 717成人午夜免费福利电影| 日本一区免费视频| 国产99久久久国产精品免费看| 日韩一区精品字幕| 国产成人一级电影| 欧美精选一区二区| 国产精品电影一区二区| 亚洲国产精品欧美一二99| 欧美日韩视频不卡| 国产a视频精品免费观看| 国产精品77777| 国产精品美女久久久久高潮| 亚洲一区二区三区四区中文字幕| 午夜精品福利在线| 一本色道久久综合狠狠躁的推荐| 欧美日韩国产免费一区二区 | 亚洲欧洲一区二区三区| 日韩精品一级二级| 在线综合+亚洲+欧美中文字幕| 亚洲国产美国国产综合一区二区| 99精品视频免费在线观看| 国产性色一区二区| 国产suv精品一区二区三区| 日韩免费观看高清完整版| 亚洲香蕉伊在人在线观| 久久精品亚洲精品国产欧美| 国产精品1区2区3区在线观看| 久久午夜免费电影| 成人a免费在线看| 亚洲激情图片qvod| 在线播放91灌醉迷j高跟美女 | 天天影视涩香欲综合网| 欧美一级黄色录像| 麻豆国产欧美一区二区三区| 久久精品欧美日韩| 91年精品国产| 日韩av在线发布| 国产日韩精品一区二区浪潮av| 成人一道本在线| 亚洲成av人片一区二区梦乃| 精品粉嫩超白一线天av| 国产一区欧美一区| 亚洲区小说区图片区qvod| 欧美一区二区在线不卡| 成人午夜电影小说| 日韩中文字幕区一区有砖一区| 久久久91精品国产一区二区三区| 91丝袜美腿高跟国产极品老师 | 国产精品一级片| 亚洲国产欧美在线| 久久综合久久综合久久| 在线免费观看日本一区| 国产aⅴ综合色| 理论片日本一区| 一级精品视频在线观看宜春院| 国产丝袜美腿一区二区三区| 在线不卡免费欧美| 91丝袜呻吟高潮美腿白嫩在线观看| 精品一区二区在线视频| 奇米色一区二区三区四区| 亚洲在线中文字幕| 亚洲日本在线看| 国产欧美日韩视频在线观看| 久久蜜桃av一区精品变态类天堂 | 欧美成人性福生活免费看| 91国产福利在线| 日本丶国产丶欧美色综合| www.欧美亚洲| 91色乱码一区二区三区| 91在线观看污| 一本久道中文字幕精品亚洲嫩 | 国产精品久久久久久久久搜平片| 26uuu国产一区二区三区| 欧美一区二区三区电影| 欧美猛男男办公室激情| 欧美午夜精品久久久久久超碰| 在线亚洲一区二区| 欧美优质美女网站| 91精品国产综合久久久久久| 日韩欧美亚洲一区二区| 久久一区二区视频| 国产精品成人免费精品自在线观看 | 美女一区二区视频| 一区二区三区在线免费| 日本中文字幕不卡| 高清久久久久久| 欧美日韩亚州综合| 国产欧美一区视频| 亚洲高清一区二区三区| 麻豆91免费观看| 成人三级伦理片| 91精品久久久久久久99蜜桃| 中文字幕欧美国产| 无码av中文一区二区三区桃花岛| 蜜桃av一区二区| 91麻豆.com| 欧美电视剧在线观看完整版| 一区在线中文字幕| 国产精品一区二区不卡| 欧美美女直播网站| 国产日韩av一区二区| 日本欧美大码aⅴ在线播放| 91免费看`日韩一区二区| 久久久青草青青国产亚洲免观| 亚洲第一主播视频| av一区二区三区黑人| 久久久综合精品| 麻豆精品一区二区三区| 欧美军同video69gay| 亚洲一区在线观看免费| 成人午夜在线免费| 国产日韩高清在线|