//#define DEBUG void ProgSSNR::run() { show(); produceSideInfo(); Matrix2D<double> output; if (!radial_avg) { if (!generate_VSSNR) estimateSSNR(1, output); else estimateSSNR(2, output); if (fn_out == "") fn_out=fn_S.insertBeforeExtension("_SSNR").removeLastExtension().addExtension("xmd"); } else { radialAverage(output); if (fn_out == "") fn_out=fn_VSSNR.insertBeforeExtension("_radial_avg").removeLastExtension().addExtension("xmd"); } #ifdef DEBUG output.write(fn_out); #endif MetaData MD; for (size_t i=1; i<MAT_YSIZE(output); ++i) { size_t id=MD.addObject(); MD.setValue(MDL_RESOLUTION_FREQ,output(i,1),id); MD.setValue(MDL_RESOLUTION_SSNR,output(i,2),id); MD.setValue(MDL_RESOLUTION_FREQREAL,1.0/output(i,1),id); } MD.write(fn_out); }
FourierProjector::FourierProjector(MultidimArray<double> &V, double paddFactor, double maxFreq, int degree) { volume = &V; volumeSize=XSIZE(*volume); paddingFactor = paddFactor; maxFrequency = maxFreq; BSplineDeg = degree; produceSideInfo(); }
// Run --------------------------------------------------------------------- void ProgDetectMissingWedge::run() { produceSideInfo(); FileName fn_root=V.name().withoutExtension(); MultidimArray<double> * mdaV = &MULTIDIM_ARRAY(V); // Detect one of the planes lookForPlane(mdaV, Vmag, maxFreq, planeWidth, 1, rotPos, tiltPos); Image<double> * Vdraw = new Image<double>(); if (saveMarks) { (*Vdraw)()=(*Vmag); evaluatePlane(rotPos, tiltPos, mdaV, Vmag, maxFreq, planeWidth, 1, &(*Vdraw)()); } // Detect the other plane lookForPlane(mdaV, Vmag, maxFreq, planeWidth, -1, rotNeg, tiltNeg, true, rotPos, tiltPos); if (saveMarks) { evaluatePlane(rotNeg, tiltNeg, mdaV, Vmag, maxFreq, planeWidth, -1, &(*Vdraw)()); Vdraw->write(fn_root+"_marks.vol"); } if (saveMask) { Vdraw->clear(); drawWedge(rotPos, tiltPos, rotNeg, tiltNeg, mdaV, Vmag, &(*Vdraw)()); Vdraw->write(fn_root+"_mask.vol"); } std::cout << "Plane1: " << rotPos << " " << tiltPos << std::endl; std::cout << "Plane2: " << rotNeg << " " << tiltNeg << std::endl; delete Vdraw; delete Vmag; }