Java BufferedImage Operation thresholdImage(BufferedImage image, int threshold)

Here you can find the source of thresholdImage(BufferedImage image, int threshold)

Description

Converts an image (RGB, RGBA, ...

License

Open Source License

Parameter

Parameter Description
image the image to convert. Remains untouched.
threshold the threshold in [0,255]

Return

a new BufferedImage instance of TYPE_BYTE_GRAY with only 0'S and 255's

Declaration

public static BufferedImage thresholdImage(BufferedImage image, int threshold) 

Method Source Code

//package com.java2s;
/*/*from  w  w  w.  ja  v  a 2s . c om*/
 * This file is part of the LIRE project: http://www.semanticmetadata.net/lire
 * LIRE is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * LIRE is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with LIRE; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * We kindly ask you to refer the any or one of the following publications in
 * any publication mentioning or employing Lire:
 *
 * Lux Mathias, Savvas A. Chatzichristofis. Lire: Lucene Image Retrieval ?
 * An Extensible Java CBIR Library. In proceedings of the 16th ACM International
 * Conference on Multimedia, pp. 1085-1088, Vancouver, Canada, 2008
 * URL: http://doi.acm.org/10.1145/1459359.1459577
 *
 * Lux Mathias. Content Based Image Retrieval with LIRE. In proceedings of the
 * 19th ACM International Conference on Multimedia, pp. 735-738, Scottsdale,
 * Arizona, USA, 2011
 * URL: http://dl.acm.org/citation.cfm?id=2072432
 *
 * Mathias Lux, Oge Marques. Visual Information Retrieval using Java and LIRE
 * Morgan & Claypool, 2013
 * URL: http://www.morganclaypool.com/doi/abs/10.2200/S00468ED1V01Y201301ICR025
 *
 * Copyright statement:
 * ====================
 * (c) 2002-2013 by Mathias Lux (mathias@juggle.at)
 *  http://www.semanticmetadata.net/lire, http://www.lire-project.net
 *
 * Updated: 11.07.13 09:32
 */

import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;

public class Main {
    /**
     * Converts an image (RGB, RGBA, ... whatever) to a binary one based on given threshold
     *
     * @param image     the image to convert. Remains untouched.
     * @param threshold the threshold in [0,255]
     * @return a new BufferedImage instance of TYPE_BYTE_GRAY with only 0'S and 255's
     */
    public static BufferedImage thresholdImage(BufferedImage image, int threshold) {
        BufferedImage result = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
        result.getGraphics().drawImage(image, 0, 0, null);
        WritableRaster raster = result.getRaster();
        int[] pixels = new int[image.getWidth()];
        for (int y = 0; y < image.getHeight(); y++) {
            raster.getPixels(0, y, image.getWidth(), 1, pixels);
            for (int i = 0; i < pixels.length; i++) {
                if (pixels[i] < threshold)
                    pixels[i] = 0;
                else
                    pixels[i] = 255;
            }
            raster.setPixels(0, y, image.getWidth(), 1, pixels);
        }
        return result;
    }
}

Related

  1. stitchImages(BufferedImage[] images, int[] relX)
  2. switchAxes(BufferedImage img)
  3. symmetrifyY(BufferedImage image, boolean useFirstHalfImage, boolean flipVertical)
  4. testNeighbours(BufferedImage source, int x, int y, boolean alpha)
  5. texture2D(BufferedImage normalMap, int x, int y)
  6. tile(BufferedImage source, Rectangle r, GraphicsConfiguration conf)
  7. tileStretchPaint(Graphics g, Component component, BufferedImage image, Insets insets)
  8. tilt(BufferedImage image, double angle)
  9. tintImage(BufferedImage src, Color color, float tintOpacity)