public static ImageDataType convertToGenericType(ImageDataType type) { if (type.isInteger()) { if (type.getNumBits() == 8) return ImageDataType.I8; else if (type.getNumBits() == 16) return ImageDataType.I16; } return type; }
private void setByDataType( ImageDataType type ) { primitiveType = type.getDataType(); numBits = type.getNumBits(); abbreviatedType = type.toString(); if( type.isInteger() ) { isInteger = true; if( numBits <= 32 ) largeSumType = "long"; if( !type.isSigned() ) { isSigned = false; if( byte.class == primitiveType) { isSigned = true; isInteger = false; if( type.getNumBits() == 32 ) { sumType = "float"; } else {
public FourierVisualizeApp( Class<T> imageType ) { this(ImageDataType.classToType(imageType)); }
public static <K extends KernelBase, T extends ImageGray> Class<K> getKernelType(ImageDataType type , int DOF ) { if( type == ImageDataType.F32 ) { if( DOF == 1 ) return (Class)Kernel1D_F32.class; else return (Class)Kernel2D_F32.class; } else if( type.isInteger() ) { if( DOF == 1 ) return (Class)Kernel1D_S32.class; else return (Class)Kernel2D_S32.class; } throw new IllegalArgumentException("Unknown image type: "+type); }
public static BufferedImage standard(ImageGray<?> src, BufferedImage dst) { if (src.getDataType().isInteger()) { GrayI srcInt = (GrayI) src; if (src.getDataType().isSigned()) { double max = GImageStatistics.maxAbs(srcInt); return colorizeSign(srcInt, dst, (int) max); } else { if (src.getDataType().getNumBits() == 8) { dst = ConvertBufferedImage.convertTo((GrayU8) src, dst); } else {
public static ImageBorder wrap(ImageGray image , double value ) { if( image.getDataType().isInteger() ) { if( image.getDataType().getNumBits() <= 32 ) return wrap((GrayI)image,(int)value); else return wrap((GrayS64)image,(long)value); } else if( image.getDataType().getDataType() == float.class ) { return wrap((GrayF32)image,(float)value); } else { return wrap((GrayF64)image,value); } }
public static BufferedImage grayUnsigned(GrayI src, BufferedImage dst, int normalize) { dst = checkInputs(src, dst); if (src.getDataType().isSigned()) throw new IllegalArgumentException("Can only convert unsigned images."); for (int y = 0; y < src.height; y++) { for (int x = 0; x < src.width; x++) { int v = src.get(x, y); int rgb = 255 * v / normalize; dst.setRGB(x, y, rgb << 16 | rgb << 8 | rgb); } } return dst; }
ImageDataType(boolean isSigned, Class<?> dataType) { this.isAbstract = false; this.isSigned = isSigned; this.dataType = dataType; configureByDataType(dataType); }
private void configureByDataType(Class<?> dataType ) { if( dataType == float.class || dataType == double.class ) { sumType = dataType; isInteger = false; if( dataType == float.class ) numBits = 32; else numBits = 64; } else { isInteger = true; if( dataType == byte.class ) numBits = 8; else if( dataType == short.class ) numBits = 16; else if( dataType == int.class ) numBits = 32; else if( dataType == long.class ) numBits = 64; if( numBits <= 32 ) sumType = int.class; else sumType = long.class; } configureMinMaxValues(); }
public static Kernel2D convertToKernel( ImageGray image ) { if( image.getDataType().isInteger() ) { return KernelMath.convertToKernel((GrayI)image); } else { return KernelMath.convertToKernel((GrayF32)image); } } }
public static BufferedImage standard(ImageGray<?> src, BufferedImage dst) { if (src.getDataType().isInteger()) { GrayI srcInt = (GrayI) src; if (src.getDataType().isSigned()) { double max = GImageStatistics.maxAbs(srcInt); return colorizeSign(srcInt, dst, (int) max); } else { if (src.getDataType().getNumBits() == 8) { dst = ConvertBufferedImage.convertTo((GrayU8) src, dst); } else {
public static BufferedImage grayUnsigned(GrayI src, BufferedImage dst, int normalize) { dst = checkInputs(src, dst); if (src.getDataType().isSigned()) throw new IllegalArgumentException("Can only convert unsigned images."); for (int y = 0; y < src.height; y++) { for (int x = 0; x < src.width; x++) { int v = src.get(x, y); int rgb = 255 * v / normalize; dst.setRGB(x, y, rgb << 16 | rgb << 8 | rgb); } } return dst; }
ImageDataType(Class dataType) { this.isAbstract = true; this.dataType = dataType; configureByDataType(dataType); }
public static <T extends ImageGray<T>, K extends Kernel2D> K gaussian2D(ImageDataType imageType, double sigma, int radius ) { int numBits = imageType.getNumBits() <= 32 ? 32 : imageType.getNumBits(); return gaussian(2,!imageType.isInteger(), numBits, sigma,radius); }
public static void process(ImageGray input , ImageGray output, int radius ) { if( input.getDataType().isInteger() ) { process((GrayI)input, (GrayI)output, radius, null); } else { process((GrayF32)input, (GrayF32)output, radius, null); } }
public static <K extends KernelBase, T extends ImageGray> Class<K> getKernelType( Class<T> imageType , int DOF ) { return getKernelType( ImageDataType.classToType(imageType), DOF); } }
public static <T extends KernelBase> T createKernelForImage( int width , int offset, int DOF , ImageDataType type ) { boolean isFloat = !type.isInteger(); int numBits = Math.max(32, type.getNumBits()); return createKernel(width,offset,DOF,isFloat,numBits); }
public static void print(ImageGray a) { if( a.getDataType().isInteger() ) { print((GrayI)a); } else if( a instanceof GrayF32) { print((GrayF32)a); } else { print((GrayF64)a); } }
public static <I extends ImageInterleaved<I>> ImageType<I> il(int numBands, Class<I> imageType) { return new ImageType<>(Family.INTERLEAVED, ImageDataType.classToType(imageType), numBands); }
/** * Configuration constructor * @param distort Used to apply image distortion from different input images * @param equiWidth Width of output equirectangular image * @param equiHeight Height of output equirectangular image * @param imageType Type of image it processes and outputs. Must be floating point. Hmm why isn't this fixed? */ public MultiCameraToEquirectangular(ImageDistort<T,T> distort , int equiWidth , int equiHeight , ImageType<T> imageType ) { if( imageType.getDataType().isInteger() || imageType.getDataType().getNumBits() != 32 ) throw new IllegalArgumentException("Must be a 32 bit floating point image"); this.distort = distort; this.equiWidth = equiWidth; this.equHeight = equiHeight; tools.configure(equiWidth, equiHeight); weightImage = new GrayF32(equiWidth,equiHeight); averageImage = imageType.createImage(equiWidth, equiHeight); workImage = averageImage.createSameShape(); cameraRendered = averageImage.createSameShape(); }