android图像的二值化处理

时间:2021-06-18 06:15:16


这是一个对图片二值化处理的方法,将彩色图转化为黑白图!


上代码:

	/**
	 * 对图片进行二值化处理
	 * 
	 * @param bm
	 *            原始图片
	 * @return 二值化处理后的图片
	 */
	public static Bitmap getBinaryzationBitmap(Bitmap bm) {
		Bitmap bitmap = null;
		// 获取图片的宽和高
		int width = bm.getWidth();
		int height = bm.getHeight();
		// 创建二值化图像
		bitmap = bm.copy(Config.ARGB_8888, true);
		// 遍历原始图像像素,并进行二值化处理
		for (int i = 0; i < width; i++) {
			for (int j = 0; j < height; j++) {
				// 得到当前的像素值
				int pixel = bitmap.getPixel(i, j);
				// 得到Alpha通道的值
				int alpha = pixel & 0xFF000000;
				// 得到Red的值
				int red = (pixel & 0x00FF0000) >> 16;
				// 得到Green的值
				int green = (pixel & 0x0000FF00) >> 8;
				// 得到Blue的值
				int blue = pixel & 0x000000FF;
				// 通过加权平均算法,计算出最佳像素值
				int gray = (int) ((float) red * 0.3 + (float) green * 0.59 + (float) blue * 0.11);
				// 对图像设置黑白图
				if (gray <= 95) {
					gray = 0;
				} else {
					gray = 255;
				}
				// 得到新的像素值
				int newPiexl = alpha | (gray << 16) | (gray << 8) | gray;
				// 赋予新图像的像素
				bitmap.setPixel(i, j, newPiexl);
			}
		}
		return bitmap;
	}

这是效果图:

android图像的二值化处理

这是源码的地址,有需要的可以去下载:

http://download.csdn.net/detail/xuwenneng/9637845