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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ang1.c

?? 3DMEDLIB - 三維醫(yī)學(xué)圖像開發(fā)源程序庫及范例
?? 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;
        }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区久久久久久久久不 | 丝袜美腿亚洲一区| 欧美日韩一区二区在线观看视频| 亚洲永久精品大片| 欧美人与z0zoxxxx视频| 日本网站在线观看一区二区三区| 91精品国产高清一区二区三区蜜臀| 日本网站在线观看一区二区三区| 欧美一区二区三区免费视频| 捆绑变态av一区二区三区| 久久久久久久久久久久电影| 成人综合婷婷国产精品久久免费| 中文字幕一区二区三区在线观看| 色噜噜狠狠色综合欧洲selulu| 亚洲超碰97人人做人人爱| 日韩免费观看高清完整版| 国产在线麻豆精品观看| 中文字幕成人在线观看| 一本色道亚洲精品aⅴ| 亚洲高清在线视频| 精品日韩99亚洲| eeuss鲁片一区二区三区| 亚洲综合久久av| 精品久久久久久无| 99精品桃花视频在线观看| 亚洲bt欧美bt精品| 精品国产乱码久久久久久1区2区 | 日韩欧美中文一区| 国产综合久久久久久久久久久久| 国产欧美一区二区在线观看| 91久久国产最好的精华液| 蜜桃一区二区三区四区| 欧美国产激情二区三区| 欧美日韩不卡一区二区| 丰满白嫩尤物一区二区| 亚洲国产成人精品视频| 国产日韩欧美一区二区三区综合| 欧美三级三级三级爽爽爽| 国产真实乱对白精彩久久| 亚洲一区二区三区自拍| 欧美国产日韩亚洲一区| 欧美一二三区在线观看| 在线观看视频一区| 粉嫩13p一区二区三区| 日韩**一区毛片| 一区二区久久久久久| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美性受极品xxxx喷水| 国产高清在线观看免费不卡| 日韩影院在线观看| 亚洲尤物在线视频观看| 国产精品不卡视频| 亚洲精品在线观看视频| 欧美一区二区三区成人| 欧美影视一区二区三区| 成人听书哪个软件好| 麻豆91精品91久久久的内涵| 亚洲高清免费视频| 亚洲啪啪综合av一区二区三区| 国产午夜精品一区二区三区四区| 日韩三级av在线播放| 欧美日韩国产区一| 欧美影视一区在线| 色婷婷av久久久久久久| 99视频在线精品| 99在线精品视频| av成人免费在线| 成人精品免费看| 国产99久久久国产精品免费看 | 韩日精品视频一区| 美国精品在线观看| 日韩国产精品大片| 免费成人结看片| 日本中文在线一区| 视频在线观看一区| 天天亚洲美女在线视频| 一区二区欧美视频| 亚洲国产一二三| 亚洲一区影音先锋| 亚洲成人在线网站| 午夜视频一区在线观看| 日韩电影在线免费观看| 免费在线观看不卡| 激情久久五月天| 国产精品亚洲一区二区三区妖精 | 成人精品一区二区三区四区| 国产精品一级片| 粉嫩高潮美女一区二区三区 | 91女神在线视频| 色嗨嗨av一区二区三区| 在线观看日韩av先锋影音电影院| 欧美三级中文字| 欧美福利电影网| 精品久久久久久久人人人人传媒| 精品国产一区久久| 国产拍揄自揄精品视频麻豆| 亚洲丝袜精品丝袜在线| 亚洲一区二区av电影| 奇米888四色在线精品| 激情综合色播激情啊| 国产成人免费网站| 色爱区综合激月婷婷| 7777精品伊人久久久大香线蕉超级流畅| 日韩一区二区三区三四区视频在线观看| 欧美videos中文字幕| 欧美国产丝袜视频| 欧美日韩国产一二三| 精品久久久网站| 中文字幕一区二区三区四区不卡| 亚洲一区二区三区四区在线免费观看 | 欧美主播一区二区三区美女| 欧美高清www午色夜在线视频| 欧美成人性福生活免费看| 国产精品乱码人人做人人爱| 亚洲激情一二三区| 蜜臀av国产精品久久久久| 高清成人免费视频| 91麻豆精品国产91久久久久久久久| 久久久亚洲高清| 夜夜嗨av一区二区三区中文字幕| 久久精品二区亚洲w码| 91丨九色丨尤物| 日韩女优毛片在线| 亚洲一区国产视频| 国产91在线看| 欧美一级在线观看| 亚洲精品中文在线| 国产曰批免费观看久久久| 日本高清无吗v一区| 国产亚洲一本大道中文在线| 亚洲午夜久久久| 成人性色生活片免费看爆迷你毛片| 欧美女孩性生活视频| 中文字幕一区二区三区在线不卡 | 丁香天五香天堂综合| 欧美高清激情brazzers| 日韩一区中文字幕| 国产毛片精品一区| 91精品国产综合久久国产大片| 亚洲人成网站精品片在线观看| 国产一区二区免费在线| 9191久久久久久久久久久| 亚洲视频一区在线| 福利电影一区二区| 精品久久久久久最新网址| 亚洲sss视频在线视频| 91麻豆国产精品久久| 亚洲国产成人一区二区三区| 久久91精品久久久久久秒播| 精品视频一区二区三区免费| 亚洲欧美国产77777| 成人午夜av影视| 国产无一区二区| 精油按摩中文字幕久久| 777午夜精品视频在线播放| 亚洲成人777| 欧美无砖专区一中文字| 亚洲精品一卡二卡| 91免费观看在线| 亚洲老妇xxxxxx| 色av成人天堂桃色av| 亚洲欧美日韩国产另类专区| 成人av电影在线观看| 国产精品久久久久久久久晋中 | 欧美国产精品v| 国产一区 二区| 久久亚洲一区二区三区明星换脸| 久久成人免费电影| 精品三级在线观看| 一区二区三区四区不卡在线 | 一级女性全黄久久生活片免费| 337p粉嫩大胆噜噜噜噜噜91av| 欧美在线观看视频在线| 91在线观看美女| 国产精品成人网| 丁香亚洲综合激情啪啪综合| 国产网站一区二区三区| 风间由美一区二区三区在线观看| 久久精品夜夜夜夜久久| 国产麻豆精品95视频| 国产婷婷一区二区| bt7086福利一区国产| 国产精品国产三级国产aⅴ无密码| 成人三级伦理片| 一区二区成人在线视频 | 日韩精品一卡二卡三卡四卡无卡| 欧美乱妇15p| 麻豆精品久久精品色综合| 精品国产乱码久久久久久闺蜜| 国产成人综合在线观看| 国产精品久久久久久亚洲伦 | 国产精品白丝av| 中文字幕日韩一区二区| 色婷婷av一区二区三区软件| 五月天网站亚洲| 久久夜色精品国产噜噜av| 国产91精品免费| 一区二区三区四区av| 日韩一区二区视频在线观看| 国产精品一区二区你懂的|