diff --git a/calc_grad_perc_dev.cc b/calc_grad_perc_dev.cc index 92f80eb9bf276c3f884e71ef03949b9519b06a84..86e13fa8eabf5bac81513efc5852a21d80a17cfd 100644 --- a/calc_grad_perc_dev.cc +++ b/calc_grad_perc_dev.cc @@ -54,17 +54,34 @@ int nonoptarg; // for example ... print difference of COGs between 2 images ... int do_work(int argc, char* argv[]) { - volume4D<float> fw, xpd, ypd, zpd; + volume4D<float> fw, xpd, ypd, zpd, tmp; + volume<float> mask; read_volume4D(fw,fullwarp.value()); - gradient(fw[0],xpd); + mask=fw[0]*0.0f + 1.0f; + tmp=lrxgrad(fw[0],mask); + xpd.addvolume((tmp[0]+tmp[1])*0.5f); + tmp=lrygrad(fw[0],mask); + xpd.addvolume((tmp[0]+tmp[1])*0.5f); + tmp=lrzgrad(fw[0],mask); + xpd.addvolume((tmp[0]+tmp[1])*0.5f); xpd[0]/=fw.xdim(); xpd[1]/=fw.ydim(); xpd[2]/=fw.zdim(); - gradient(fw[1],ypd); + tmp=lrxgrad(fw[1],mask); + ypd.addvolume((tmp[0]+tmp[1])*0.5f); + tmp=lrygrad(fw[1],mask); + ypd.addvolume((tmp[0]+tmp[1])*0.5f); + tmp=lrzgrad(fw[1],mask); + ypd.addvolume((tmp[0]+tmp[1])*0.5f); ypd[0]/=fw.xdim(); ypd[1]/=fw.ydim(); ypd[2]/=fw.zdim(); - gradient(fw[2],zpd); + tmp=lrxgrad(fw[2],mask); + zpd.addvolume((tmp[0]+tmp[1])*0.5f); + tmp=lrygrad(fw[2],mask); + zpd.addvolume((tmp[0]+tmp[1])*0.5f); + tmp=lrzgrad(fw[2],mask); + zpd.addvolume((tmp[0]+tmp[1])*0.5f); zpd[0]/=fw.xdim(); zpd[1]/=fw.ydim(); zpd[2]/=fw.zdim();