package cz.cuni.lf1.lge.ThunderSTORM.calibration;
import cz.cuni.lf1.lge.ThunderSTORM.detectors.ui.IDetectorUI;
import cz.cuni.lf1.lge.ThunderSTORM.estimators.ui.AstigmatismCalibrationEstimatorUI;
import cz.cuni.lf1.lge.ThunderSTORM.filters.ui.IFilterUI;
import ij.IJ;
import ij.ImagePlus;
import ij.gui.Roi;
public class AstigmaticCalibrationProcess extends AbstractCalibrationProcess {
// processing
ImagePlus imp;
Roi roi;
// results
private PSFSeparator beadFits;
public AstigmaticCalibrationProcess(CalibrationConfig config, IFilterUI selectedFilterUI, IDetectorUI selectedDetectorUI,
AstigmatismCalibrationEstimatorUI calibrationEstimatorUI, DefocusFunction defocusModel,
double stageStep, double zRangeLimit, ImagePlus imp, Roi roi) {
super(config, selectedFilterUI, selectedDetectorUI, calibrationEstimatorUI, defocusModel, stageStep, zRangeLimit);
this.imp = imp;
this.roi = roi;
}
@Override
public void runCalibration() {
angle = estimateAngle(imp, roi);
IJ.log("angle = " + angle);
beadFits = fitFixedAngle(angle, imp, roi, selectedFilterUI, selectedDetectorUI, calibrationEstimatorUI, defocusModel, config.showResultsTable);
fitQuadraticPolynomials(beadFits.getPositions());
IJ.log("s1 = " + polynomS1Final.toString());
IJ.log("s2 = " + polynomS2Final.toString());
}
public DefocusCalibration getCalibration(DefocusFunction defocusModel) {
return defocusModel.getCalibration(angle, null, polynomS1Final, polynomS2Final);
}
@Override
public void drawOverlay() {
drawOverlay(imp, roi, beadFits.getAllFits(), usedPositions);
}
}