package edu.harvard.mcb.leschziner.particlesource; import java.awt.image.BufferedImage; import com.googlecode.javacv.cpp.opencv_core.IplImage; import edu.harvard.mcb.leschziner.analyze.BlobExtractor; import edu.harvard.mcb.leschziner.core.Particle; import edu.harvard.mcb.leschziner.core.ParticleFilter; import edu.harvard.mcb.leschziner.particlefilter.BinaryThresholdFilter; import edu.harvard.mcb.leschziner.particlefilter.GaussianFilter; public class DoGParticlePicker extends DistributedParticlePicker { // Filters for picking private final ParticleFilter lowFilter; private final ParticleFilter highFilter; private final ParticleFilter thresholdFilter; private final BlobExtractor blobExtractor; public DoGParticlePicker(int particleSize, int particleEpsillon, int lowRadius, int highRadius, int threshold, int boxSize) { super(boxSize); lowFilter = new GaussianFilter(lowRadius); highFilter = new GaussianFilter(highRadius); thresholdFilter = new BinaryThresholdFilter(threshold); blobExtractor = new BlobExtractor(particleSize, particleEpsillon); } @Override public void processMicrograph(final BufferedImage image) { // Queuing a request to pick particles Particle target = new Particle(image); processMicrograph(target); } @Override public void processMicrograph(final IplImage image) { Particle target = new Particle(image); processMicrograph(target); } @Override public void processMicrograph(Particle target) { execute(new DoGPickingTask(target, lowFilter, highFilter, thresholdFilter, blobExtractor, boxSize, particleQueueName, executorName)); } }