/** * Converts a {@link ImageMultiBand} into a {@link ImageGray} by computing the average value of each pixel * across all the bands. * * @param input ImageMultiBand that is being converted. Not modified. * @param output (Optional) The single band output image. If null a new image is created. Modified. * @return Converted image. */ public static <T extends ImageGray<T>>T average( ImageMultiBand input , T output ) { if( input instanceof Planar ) { return (T)average((Planar)input,output); } else if( input instanceof ImageInterleaved ) { return (T)average((ImageInterleaved)input,output); } else { throw new RuntimeException("Unknown multiband image"); } }
public void process(final BufferedImage buffLeft, final BufferedImage buffRight) { imageLeft.reshape(buffLeft.getWidth(), buffLeft.getHeight()); imageRight.reshape(buffRight.getWidth(), buffRight.getHeight()); grayLeft.reshape(buffLeft.getWidth(), buffLeft.getHeight()); grayRight.reshape(buffRight.getWidth(), buffRight.getHeight()); ConvertBufferedImage.convertFromPlanar(buffLeft, imageLeft, true, imageType); ConvertBufferedImage.convertFromPlanar(buffRight, imageRight, true, imageType); GConvertImage.average(imageLeft, grayLeft); GConvertImage.average(imageRight, grayRight); SwingUtilities.invokeLater(new Runnable() { public void run() { panel.setImages(buffLeft, buffRight); processedImage = true; doRefreshAll(); } }); }
int h = output.height; ImageGray tmp = GeneralizedImageOps.createSingleBand(mi.getImageType().getDataType(),w,h); average(mi,tmp); convert(tmp,so); } else { average(mi,so); int h = output.height; ImageGray tmp = GeneralizedImageOps.createSingleBand(mb.getImageType().getDataType(),w,h); average(mb,tmp); convert(tmp,so); } else { average(mb,so);
GConvertImage.average((Planar<I>)frame, gray); grayScale = true;
@Override public void setImage(Planar<T> image) { gray.reshape(image.width,image.height); grayII.reshape(image.width,image.height); bandII.reshape(image.width,image.height); GConvertImage.average(image, gray); GIntegralImageOps.transform(gray, grayII); for( int i = 0; i < image.getNumBands(); i++) GIntegralImageOps.transform(image.getBand(i), bandII.getBand(i)); alg.setImage(grayII,bandII); }
@Override public void detect(Planar<T> input) { gray.reshape(input.width,input.height); grayII.reshape(input.width,input.height); bandII.reshape(input.width,input.height); GConvertImage.average(input,gray); GIntegralImageOps.transform(gray, grayII); for( int i = 0; i < input.getNumBands(); i++) GIntegralImageOps.transform(input.getBand(i), bandII.getBand(i)); alg.detect(grayII,bandII); }