public RemoveOutliers( final FloatProcessor fp ) { super( fp ); fpOriginal = ( FloatProcessor )fp.duplicate(); }
public RemoveOutliers( final FloatProcessor fp ) { super( fp ); fpOriginal = ( FloatProcessor )fp.duplicate(); }
/** Returns a clone of this FHT. */ public FHT getCopy() { ImageProcessor ip = super.duplicate(); FHT fht = new FHT(ip); fht.isFrequencyDomain = isFrequencyDomain; fht.quadrantSwapNeeded = quadrantSwapNeeded; fht.rgb = rgb; fht.originalWidth = originalWidth; fht.originalHeight = originalHeight; fht.originalBitDepth = originalBitDepth; fht.originalColorModel = originalColorModel; return fht; }
/** Returns a clone of this FHT. */ public FHT getCopy() { ImageProcessor ip = super.duplicate(); FHT fht = new FHT(ip); fht.isFrequencyDomain = isFrequencyDomain; fht.quadrantSwapNeeded = quadrantSwapNeeded; fht.rgb = rgb; fht.originalWidth = originalWidth; fht.originalHeight = originalHeight; fht.originalBitDepth = originalBitDepth; fht.originalColorModel = originalColorModel; return fht; }
/** * Create a convolved image with a horizontal and a vertical kernel * simple straightforward, not optimized---replace this with a trusted better version soon * * @param input the input image * @param h horizontal kernel * @param v vertical kernel * * @return convolved image */ final static public FloatProcessor createConvolveSeparable( final FloatProcessor input, final float[] h, final float[] v ) { final FloatProcessor output = ( FloatProcessor )input.duplicate(); convolveSeparable( output, h, v ); return output; }
/** * Create a convolved image with a horizontal and a vertical kernel * simple straightforward, not optimized---replace this with a trusted better version soon * * @param input the input image * @param h horizontal kernel * @param v vertical kernel * * @return convolved image */ final static public FloatProcessor createConvolveSeparable( final FloatProcessor input, final float[] h, final float[] v ) { final FloatProcessor output = ( FloatProcessor )input.duplicate(); convolveSeparable( output, h, v ); return output; }
public NormalizeLocalContrast( final FloatProcessor fp ) { super( fp ); fpOriginal = ( FloatProcessor )fp.duplicate(); fpOriginal.setMinAndMax( fp.getMin(), fp.getMax() ); }
public NormalizeLocalContrast( final FloatProcessor fp ) { super( fp ); fpOriginal = ( FloatProcessor )fp.duplicate(); fpOriginal.setMinAndMax( fp.getMin(), fp.getMax() ); }
/** * Center a scaled image1 into the center of a larger image0 with offset offset_x and offset_y. * The original image0 will not be modified. * @param image0 the base image * @param width0 the width in pixels of the base image * @param image1 the image to be inserted * @param width1 the width in pixels of the new image * @param scaling the amount by which image1 will be scaled. * @return a new image of the same size as image0. */ public static float [] center(float [] image0, int width0, float [] image1, int width1, float scaling, int offset_x, int offset_y) { int height0 = image0.length / width0; int height1 = image1.length / width1; ImageProcessor ip0 = new FloatProcessor(width0, height0, image0, null).duplicate(); ImageProcessor ip1 = new FloatProcessor(width1, height1, image1, null).duplicate(); int newwidth1 = (int) (width1 * scaling); int newheight1 = (int) (height1 * scaling); //System.out.println("1 "+ip1.getWidth()+" "+newwidth1+" ip1.height="+ip1.getHeight()+" "+newheight1); ip1 = ip1.resize(newwidth1, newheight1); //System.out.println("2"+ip1.getWidth()+" ip1.height="+ip1.getHeight()); int x = (int) Math.round( (width0 - ip1.getWidth()) / 2.0); int y = (int) Math.round( (height0 - ip1.getHeight()) / 2.0); //System.out.println("x="+x+" y="+y+" ip1.width="+ip1.getWidth()+" ip1.height="+ip1.getHeight()); ip0.insert(ip1, x + offset_x, y + offset_y); return (float []) ip0.getPixels(); } /**
final int h = ( int )Math.round( oh * scale ); final FloatProcessor temp = ( FloatProcessor )source.duplicate(); temp.setMinAndMax( source.getMin(), source.getMax() );
FloatProcessor[] weights = new FloatProcessor[slices.length]; for (int i = 0; i < slices.length; i++) { weights[i] = (FloatProcessor)slices[i].duplicate(); blur.blur(weights[i], radius); float[] pixels1 = (float[])slices[i].getPixels(); FloatProcessor result = (FloatProcessor)slices[0].duplicate(); for (int j = 0; j < pixelCount; j++) { float cumul = 0, totalWeight = 0;
FloatProcessor thresholdedImage = (FloatProcessor) image.duplicate(); threshold(thresholdedImage, localThresholdValue, 0.0f, 255.0f);
public static FloatProcessor focus(FloatProcessor[] slices, double radius) { boolean wasBatchMode = Interpreter.batchMode; Interpreter.batchMode = true; // calculate weights GaussianBlur blur = new GaussianBlur(); int pixelCount = slices[0].getWidth() * slices[0].getHeight(); FloatProcessor[] weights = new FloatProcessor[slices.length]; for (int i = 0; i < slices.length; i++) { weights[i] = (FloatProcessor)slices[i].duplicate(); blur.blur(weights[i], radius); float[] pixels1 = (float[])slices[i].getPixels(); float[] pixels2 = (float[])weights[i].getPixels(); for (int j = 0; j < pixelCount; j++) pixels2[j] = Math.abs(pixels2[j] - pixels1[j]); } FloatProcessor result = (FloatProcessor)slices[0].duplicate(); for (int j = 0; j < pixelCount; j++) { float cumul = 0, totalWeight = 0; for (int i = 0; i < slices.length; i++) { float value = slices[i].getf(j); float weight = weights[i].getf(j); cumul += value * weight; totalWeight += weight; } if (totalWeight != 0) result.setf(j, cumul / totalWeight); } Interpreter.batchMode = wasBatchMode; return result; }
final int h = ( int )Math.round( oh * scale ); final FloatProcessor temp = ( FloatProcessor )source.duplicate(); temp.setMinAndMax( source.getMin(), source.getMax() );
final FloatProcessor fpCopy = ( FloatProcessor )fp.duplicate();
final FloatProcessor fpCopy = ( FloatProcessor )fp.duplicate();
final FloatProcessor maskTarget = ( FloatProcessor )mask.duplicate();
final FloatProcessor maskTarget = ( FloatProcessor )mask.duplicate();
@Override final protected void init() { stackOriginal = imp.getStack(); final FloatProcessor fp1, fp2; if ( imp.getType() == ImagePlus.GRAY32 ) { fp1 = ( FloatProcessor )stackOriginal.getProcessor( 1 ).duplicate(); fp2 = ( FloatProcessor )stackOriginal.getProcessor( 2 ).duplicate(); } else { fp1 = ( FloatProcessor )stackOriginal.getProcessor( 1 ).convertToFloat(); fp2 = ( FloatProcessor )stackOriginal.getProcessor( 2 ).convertToFloat(); } bc = new BlockPMCC( fp1, fp2 ); fpR = bc.getTargetProcessor(); fpR.setMinAndMax( -1.0, 1.0 ); fpR2 = ( FloatProcessor )fpR.duplicate(); final ImageStack stack = new ImageStack( fpR.getWidth(), fpR.getHeight() ); stack.addSlice( "r", fpR2 ); imp.setStack( stack ); }
@Override final protected void init() { stackOriginal = imp.getStack(); final FloatProcessor fp1, fp2; if ( imp.getType() == ImagePlus.GRAY32 ) { fp1 = ( FloatProcessor )stackOriginal.getProcessor( 1 ).duplicate(); fp2 = ( FloatProcessor )stackOriginal.getProcessor( 2 ).duplicate(); } else { fp1 = ( FloatProcessor )stackOriginal.getProcessor( 1 ).convertToFloat(); fp2 = ( FloatProcessor )stackOriginal.getProcessor( 2 ).convertToFloat(); } bc = new BlockPMCC( fp1, fp2 ); fpR = bc.getTargetProcessor(); fpR.setMinAndMax( -1.0, 1.0 ); fpR2 = ( FloatProcessor )fpR.duplicate(); final ImageStack stack = new ImageStack( fpR.getWidth(), fpR.getHeight() ); stack.addSlice( "r", fpR2 ); imp.setStack( stack ); }