Пример #1
0
//#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);
}
Пример #2
0
FourierProjector::FourierProjector(MultidimArray<double> &V, double paddFactor, double maxFreq, int degree)
{
    volume = &V;
    volumeSize=XSIZE(*volume);
    paddingFactor = paddFactor;
    maxFrequency = maxFreq;
    BSplineDeg = degree;
    produceSideInfo();
}
Пример #3
0
// 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;
}