object-brain.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
#include "object-brain.h"
00036
#include <idseq.h>
00037
#include <idacr.h>
00038
#include <string.h>
00039
#include <idvol.h>
00040
#include <idima.h>
00041
#include "display.h"
00042
#include "noise.h"
00043
00054 PPPVOLUME_UCHAR ReadLabelVolume(
char * filein,
int x,
int y,
int z)
00055 {
00056
PPPVOLUME_UCHAR label;
00057
00058 label = (
PPPVOLUME_UCHAR)
IdVolReadRawFile(filein,
x,y,z,
VOL_UCHAR);
00059
if (!label)
00060 {
00061 printf(
"Unable to read %s \n",filein);
00062 exit(0);
00063 }
00064
00065
return label;
00066 }
00067
00080 PPPVOLUME_UCHAR GetVolumeVOI(PPPVOLUME_UCHAR label,
int px,
int py,
int pz,
int dimx,
int dimy,
int dimz)
00081 {
00082
PPPVOLUME_UCHAR vol;
00083
int i,j,k;
00084
00085 vol = (
PPPVOLUME_UCHAR)
IdVolAlloc(dimx,dimy,dimz,
VOL_UCHAR);
00086
for (k=0;k<dimz;k++)
for (j=0;j<dimy;j++)
for (i=0;i<dimx;i++)
00087 vol[k][j][i]=label[k+pz][j+py][i+px];
00088
00089
return vol;
00090 }
00091
00101 OBJECT3D*
LabelToObject(PPPVOLUME_UCHAR label, PPIMAGE_FLOAT value)
00102 {
00103
int x,y,z;
00104
int ro,t1,t2,lab;
00105
OBJECT3D *
object;
00106
int i,j,k;
00107
00108
x=
IdVolDimX(label);
00109 y=
IdVolDimY(label);
00110 z=
IdVolDimZ(label);
00111
00112
object =
AllocObject(
x,y,z,1,3);
00113
00114
for (k=0;k<z;k++)
for (j=0;j<y;j++)
for (i=0;i<
x;i++)
00115 {
00116 lab=label[k][j][i];
00117 ro=(
int) (value[lab][0]+
RandGaussian(value[lab][1],0.0,0));
00118 t1=(
int) (value[lab][2]+
RandGaussian(value[lab][3],0.0,0));
00119 t2=(
int) (value[lab][4]+
RandGaussian(value[lab][5],0.0,0));
00120
SetObjectPoint(
object,i,j,k,ro,t1,t2,
WATER);
00121 }
00122
return object;
00123 }
00124
00145 PPIMAGE_FLOAT GetBrainPhysicalValues(
double B0)
00146 {
00147
int i,j;
00148
PPIMAGE_FLOAT value;
00149 value = (
PPIMAGE_FLOAT)
IdImaAlloc(8,10,
IMA_FLOAT);
00150
for (j=0;j<10;j++)
for (i=0;i<8;i++)
00151 value[j][i]=0.0;
00152
00153
00154
00155 value[0][0]=0.0; value[0][1]=0.0;
00156 value[0][2]=0.0; value[0][3]=0.0;
00157 value[0][4]=0.0; value[0][5]=0.0;
00158 value[0][6]=0.0; value[0][7]=0.0;
00159
00160 value[1][0]=100.0; value[1][1]=0.0;
00161 value[1][2]=2569.0; value[1][3]=170.0;
00162 value[1][4]=329.0; value[1][5]=13.0;
00163 value[1][6]=-9.05e-6; value[1][7]=0.0;
00164
00165 value[2][0]=86.0; value[2][1]=0.4;
00166 value[2][2]=833.0; value[2][3]=40.0;
00167 value[2][4]=83.0; value[2][5]=8.0;
00168 value[2][6]=-9.05e-6; value[2][7]=0.0;
00169
00170 value[3][0]=77.0; value[3][1]=3.00;
00171 value[3][2]=500.0; value[3][3]=23.0;
00172 value[3][4]=70.0; value[3][5]=3.0;
00173 value[3][6]=-9.5e-6; value[3][7]=0.0;
00174
00175 value[4][0]=100.0; value[4][1]=0.0;
00176 value[4][2]=350.0; value[4][3]=0.0;
00177 value[4][4]=70.0; value[4][5]=0.0;
00178 value[4][6]=-7.5e-6; value[4][7]=0.0;
00179
00180 value[5][0]=100.0; value[5][1]=0.0;
00181 value[5][2]=900.0; value[5][3]=0.0;
00182 value[5][4]=47.0; value[5][5]=0.0;
00183 value[5][6]=-9.5e-6; value[5][7]=0.0;
00184
00185 value[6][0]=100.0; value[6][1]=0.0;
00186 value[6][2]=2569.0; value[6][3]=0.0;
00187 value[6][4]=329.0; value[6][5]=0.0;
00188 value[6][6]=-9.05e-6; value[6][7]=0.0;
00189
00190 value[7][0]=0.0; value[7][1]=0.0;
00191 value[7][2]=0.0; value[7][3]=0.0;
00192 value[7][4]=0.0; value[7][5]=0.0;
00193 value[7][6]=-8.86e-6; value[7][7]=0.0;
00194
00195 value[8][0]=86.0; value[8][1]=0.0;
00196 value[8][2]=833.0; value[8][3]=0.0;
00197 value[8][4]=83.0; value[8][5]=0.0;
00198 value[8][6]=-9.05e-6; value[8][7]=0.0;
00199
00200 value[9][0]=77.0; value[9][1]=0.0;
00201 value[9][2]=500.0; value[9][3]=0.0;
00202 value[9][4]=70.0; value[9][5]=0.0;
00203 value[9][6]=-9.05e-6; value[9][7]=0.0;
00204
00205
return (value);
00206 }
Generated on Wed Oct 19 09:28:34 2005 for SIMRI3D by
1.3.7