added target background for uct
This commit is contained in:
@@ -6,15 +6,17 @@ Domain {
|
|||||||
BC = 0 // Boundary condition type
|
BC = 0 // Boundary condition type
|
||||||
}
|
}
|
||||||
uCT {
|
uCT {
|
||||||
InputFile = "MG_dryrecon.volume"
|
InputFile = "MG_dryrecon.volume" // this is the name of the data to segment
|
||||||
rough_cutoff = 0.0
|
target = -160 // this is the target value of the phase to segment
|
||||||
lamda = 0.5
|
background = 160 // this is the background value for all other phases
|
||||||
nlm_sigsq = 0.25
|
rough_cutoff = 0.0 // step 1 -- rough thresholding
|
||||||
|
lamda = 0.5 // step 2 -- apply some smoothing
|
||||||
|
nlm_sigsq = 0.25 // step 3 -- apply non-local means
|
||||||
nlm_depth = 3
|
nlm_depth = 3
|
||||||
center_x = 960
|
center_x = 600
|
||||||
center_y = 960
|
center_y = 960
|
||||||
center_z = 600
|
center_z = 960
|
||||||
radius = 750
|
cylinder_radius = 700
|
||||||
}
|
}
|
||||||
Analysis {
|
Analysis {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,7 +70,9 @@ int main(int argc, char **argv)
|
|||||||
int nprocy = nproc[1];
|
int nprocy = nproc[1];
|
||||||
int nprocz = nproc[2];
|
int nprocz = nproc[2];
|
||||||
|
|
||||||
auto InputFile=uct_db->getScalar<std::string>( "InputFile" );
|
auto InputFile=uct_db->getScalar<std::string>( "InputFile" );
|
||||||
|
auto target=uct_db->getScalar<int>("target");
|
||||||
|
auto background=uct_db->getScalar<int>("background");
|
||||||
auto rough_cutoff=uct_db->getScalar<float>( "rough_cutoff" );
|
auto rough_cutoff=uct_db->getScalar<float>( "rough_cutoff" );
|
||||||
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" );
|
||||||
@@ -210,7 +212,8 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
// Compute the means for the high/low regions
|
// Compute the means for the high/low regions
|
||||||
// (should use automated mixture model to approximate histograms)
|
// (should use automated mixture model to approximate histograms)
|
||||||
float THRESHOLD = 0.05*maxReduce( Dm[0]->Comm, std::max( LOCVOL[0].max(), fabs(LOCVOL[0].min()) ) );
|
//float THRESHOLD = 0.05*maxReduce( Dm[0]->Comm, std::max( LOCVOL[0].max(), fabs(LOCVOL[0].min()) ) );
|
||||||
|
float THRESHOLD=0.5*float(target+background);
|
||||||
float mean_plus=0;
|
float mean_plus=0;
|
||||||
float mean_minus=0;
|
float mean_minus=0;
|
||||||
int count_plus=0;
|
int count_plus=0;
|
||||||
@@ -219,7 +222,12 @@ int main(int argc, char **argv)
|
|||||||
for (int j=1;j<Ny[0]+1;j++) {
|
for (int j=1;j<Ny[0]+1;j++) {
|
||||||
for (int i=1;i<Nx[0]+1;i++) {
|
for (int i=1;i<Nx[0]+1;i++) {
|
||||||
if (MASK(i,j,k) > 0.f ){
|
if (MASK(i,j,k) > 0.f ){
|
||||||
auto tmp = LOCVOL[0](i,j,k);
|
auto tmp = LOCVOL[0](i,j,k);
|
||||||
|
if ((tmp-background)*(tmp-target) > 0){
|
||||||
|
// direction to background / target is the same
|
||||||
|
if (tmp-target > tmp-background) tmp=target;
|
||||||
|
else tmp=background;
|
||||||
|
}
|
||||||
if ( tmp > THRESHOLD ) {
|
if ( tmp > THRESHOLD ) {
|
||||||
mean_plus += tmp;
|
mean_plus += tmp;
|
||||||
count_plus++;
|
count_plus++;
|
||||||
|
|||||||
Reference in New Issue
Block a user