/** * Copies {@param source} into {@param target}. * If the dimensions do not match, it will copy as much as it can. * * @param source * @param target */ public Copy(final RI source, final IterableInterval<T> target) { super(source, target, new long[source.numDimensions()]); } }
@Override public int numDimensions() { return interval.numDimensions(); }
@Override public int numDimensions() { return interval.numDimensions(); }
@Override public int numDimensions() { return iti.numDimensions(); }
public IterableIntervalPointSetIterator() { super(interval.numDimensions()); cursor = interval.localizingCursor(); pos = new long[n]; }
public IterableIntervalPointSetIterator() { super(interval.numDimensions()); cursor = interval.localizingCursor(); pos = new long[n]; }
@Override public boolean conforms() { return 2 == in().numDimensions(); } }
@Override public boolean conforms() { return in().numDimensions() == 2; }
@Override public boolean conforms() { return in().numDimensions() == 2 && orientation.isCompatible(2); } }
@Override public boolean conforms() { return in().numDimensions() == 3 && orientation.isCompatible(3); } }
public IterableIntervalPointSet(IterableInterval<?> interval) { this.interval = interval; int numDims = interval.numDimensions(); this.boundMin = new long[numDims]; this.boundMax = new long[numDims]; interval.min(boundMin); interval.max(boundMax); long sum = 1; for (int i = 0; i < numDims; i++) { sum *= 1 + boundMax[i] - boundMin[i]; } this.size = sum; }
public IterableIntervalPointSet(IterableInterval<?> interval) { this.interval = interval; int numDims = interval.numDimensions(); this.boundMin = new long[numDims]; this.boundMax = new long[numDims]; interval.min(boundMin); interval.max(boundMax); long sum = 1; for (int i = 0; i < numDims; i++) { sum *= 1 + boundMax[i] - boundMin[i]; } this.size = sum; }
@Override public boolean conforms() { return orientation.numDims() == in().numDimensions(); }
private Paste(final RI source, final IterableInterval<Y> target, final long[] offset) { this.target = target; this.tc = target.cursor(); this.min = new long[source.numDimensions()]; this.max = new long[source.numDimensions()]; for (int i=0; i<this.min.length; ++i) { this.min[i] = (long) Math.min(offset[i], target.realMax(i)); this.max[i] = (long) Math.min(offset[i] + source.realMax(i), target.realMax(i)); } RandomAccessibleInterval<T> view = Views.interval(source, min, max); this.copier = source.iterationOrder().equals(target.iterationOrder()) ? new CompatibleCopier(view) : new RandomAccessCopier(view); }
@Override public void compute(final UnaryFunctionOp<long[], N> op, final IterableInterval<T> output) { final Cursor<T> c = output.localizingCursor(); final long[] pos = new long[output.numDimensions()]; // loop through all pixels, set the current position and call the op while (c.hasNext()) { c.fwd(); c.localize(pos); for (int i = 0; i < output.numDimensions(); i++) { op.calculate(pos); c.get().setReal(op.calculate(pos).floatValue()); } } }
@Override public boolean conforms() { // TODO this first check is too simple, but for now ok return in().numDimensions() == out().numDimensions() + 1 && in().numDimensions() > dim; }
@Override public boolean conforms() { // TODO this first check is too simple, but for now ok return in().numDimensions() == out().numDimensions() + 1 && in().numDimensions() > dim; }
@Override public boolean conforms() { // TODO this first check is too simple, but for now ok return in().numDimensions() == out().numDimensions() + 1 && in().numDimensions() > dim; }
final public static void setGaussian( final IterableInterval< FloatType > image, final double[] location, final double[] two_sq_sigma ) { final int numDimensions = image.numDimensions(); final Cursor< FloatType > cursor = image.localizingCursor(); while ( cursor.hasNext() ) { cursor.fwd(); double value = 1; for ( int d = 0; d < numDimensions; ++d ) { final double x = location[ d ] - cursor.getIntPosition( d ); value *= Math.exp( -(x * x) / two_sq_sigma[ d ] ); } cursor.get().setReal( value ); } }
@Override public RealLocalizable calculate(final IterableInterval<T> input) { final int numDimensions = input.numDimensions(); final double[] output = new double[numDimensions]; final double[] intensityValues = new double[numDimensions]; final Cursor<T> c = input.localizingCursor(); while (c.hasNext()) { c.fwd(); for (int i = 0; i < output.length; i++) { output[i] += c.getDoublePosition(i) * c.get().getRealDouble(); intensityValues[i] += c.get().getRealDouble(); } } for (int i = 0; i < output.length; i++) { output[i] = output[i] / intensityValues[i]; } return new RealPoint(output); }