cylinder settings for uCT

This commit is contained in:
James E McClure 2018-06-06 20:34:23 -04:00
parent 0b90e6c8c9
commit e0d1a66982
3 changed files with 16 additions and 8 deletions

View File

@ -154,8 +154,8 @@ void solve( const Array<float>& VOL, Array<float>& Mean, Array<char>& ID,
fillFloat.fill(Dist); fillFloat.fill(Dist);
smooth( VOL, Dist, 2.0, MultiScaleSmooth, fillFloat ); smooth( VOL, Dist, 2.0, MultiScaleSmooth, fillFloat );
// Compute non-local mean // Compute non-local mean
int depth = 5; // int depth = 5;
float sigsq=0.1; // float sigsq=0.1;
int nlm_count = NLM3D( MultiScaleSmooth, Mean, Dist, NonLocalMean, depth, sigsq); int nlm_count = NLM3D( MultiScaleSmooth, Mean, Dist, NonLocalMean, depth, sigsq);
fillFloat.fill(NonLocalMean); fillFloat.fill(NonLocalMean);
} }

View File

@ -6,11 +6,15 @@ Domain {
BC = 0 // Boundary condition type BC = 0 // Boundary condition type
} }
uCT { uCT {
InputFile = "static_Dry_Scan_recon.volume" InputFile = "MG_dryrecon.volume"
rough_cutoff = 0.01 rough_cutoff = 0.0
lamda = 0.5 lamda = 0.5
nlm_sigsq = 0.25 nlm_sigsq = 0.25
nlm_depth = 3 nlm_depth = 3
center_x = 960
center_y = 960
center_z = 600
radius = 750
} }
Analysis { Analysis {
} }

View File

@ -75,6 +75,10 @@ int main(int argc, char **argv)
auto lamda=uct_db->getScalar<float>( "lamda" ); auto lamda=uct_db->getScalar<float>( "lamda" );
auto nlm_sigsq=uct_db->getScalar<float>( "nlm_sigsq" ); auto nlm_sigsq=uct_db->getScalar<float>( "nlm_sigsq" );
auto nlm_depth=uct_db->getScalar<int>( "nlm_depth" ); auto nlm_depth=uct_db->getScalar<int>( "nlm_depth" );
auto cx=uct_db->getScalar<int>( "center_x" );
auto cy=uct_db->getScalar<int>( "center_y" );
auto cz=uct_db->getScalar<int>( "center_z" );
auto CylRad=uct_db->getScalar<float>( "cylinder_radius" );
//....................................................................... //.......................................................................
// Reading the domain information file // Reading the domain information file
@ -181,7 +185,7 @@ int main(int argc, char **argv)
filter_src( *Dm[0], LOCVOL[0] ); filter_src( *Dm[0], LOCVOL[0] );
// Set up the mask to be distance to cylinder (crop outside cylinder) // Set up the mask to be distance to cylinder (crop outside cylinder)
float CylRad=900; // float CylRad=900;
for (int k=0;k<Nz[0]+2;k++) { for (int k=0;k<Nz[0]+2;k++) {
for (int j=0;j<Ny[0]+2;j++) { for (int j=0;j<Ny[0]+2;j++) {
for (int i=0;i<Nx[0]+2;i++) { for (int i=0;i<Nx[0]+2;i++) {
@ -193,9 +197,9 @@ int main(int argc, char **argv)
int y=jproc*Ny[0]+j-1; int y=jproc*Ny[0]+j-1;
int z=kproc*Nz[0]+k-1; int z=kproc*Nz[0]+k-1;
int cx = 0.5*nprocx*Nx[0]; //int cx = 0.5*nprocx*Nx[0];
int cy = 0.5*nprocy*Ny[0]; //int cy = 0.5*nprocy*Ny[0];
int cz = 0.5*nprocz*Nz[0]; //int cz = 0.5*nprocz*Nz[0];
// distance from the center line // distance from the center line
MASK(i,j,k) = CylRad - sqrt(float((z-cz)*(z-cz) + (y-cy)*(y-cy)) ); MASK(i,j,k) = CylRad - sqrt(float((z-cz)*(z-cz) + (y-cy)*(y-cy)) );