if( inputA instanceof ImageGray){ if( GrayU8.class == inputA.getClass() ) { PixelMath.subtract((GrayU8) inputA, (GrayU8)inputB, (GrayI16) output); } else if( GrayS8.class == inputA.getClass() ) { PixelMath.subtract((GrayS8) inputA, (GrayS8)inputB, (GrayS16) output); } else if( GrayU16.class == inputA.getClass() ) { PixelMath.subtract((GrayU16) inputA, (GrayU16)inputB, (GrayS32) output); } else if( GrayS16.class == inputA.getClass() ) { PixelMath.subtract((GrayS16) inputA, (GrayS16)inputB, (GrayS32) output); } else if( GrayS32.class == inputA.getClass() ) { PixelMath.subtract((GrayS32) inputA, (GrayS32)inputB, (GrayS32) output); } else if( GrayS64.class == inputA.getClass() ) { PixelMath.subtract((GrayS64) inputA, (GrayS64)inputB, (GrayS64) output); } else if( GrayF32.class == inputA.getClass() ) { PixelMath.subtract((GrayF32) inputA, (GrayF32)inputB, (GrayF32) output); } else if( GrayF64.class == inputA.getClass() ) { PixelMath.subtract((GrayF64) inputA, (GrayF64)inputB, (GrayF64) output); } else { throw new IllegalArgumentException("Unknown image Type: "+inputA.getClass().getSimpleName());
/** * Computes all the scale images in an octave. This includes DoG images. */ private void computeOctaveScales() { octaveImages[0] = tempImage0; for (int i = 1; i < numScales+3; i++) { octaveImages[i].reshape(tempImage0.width, tempImage0.height); applyGaussian(octaveImages[i - 1], octaveImages[i], kernelSigmaToK[i-1]); } for (int i = 1; i < numScales+3; i++) { differenceOfGaussian[i-1].reshape(tempImage0.width, tempImage0.height); PixelMath.subtract(octaveImages[i],octaveImages[i - 1],differenceOfGaussian[i-1]); } }
BlurImageOps.mean(inputPow2,inputPow2Mean,radius,tmp); PixelMath.pow2(inputMean,inputMeanPow2); PixelMath.subtract(inputPow2Mean, inputMeanPow2, stdev); PixelMath.sqrt(stdev, stdev);