如何在android处理图片( 图像二值化、锐化、转换格式).doc_第1页
如何在android处理图片( 图像二值化、锐化、转换格式).doc_第2页
如何在android处理图片( 图像二值化、锐化、转换格式).doc_第3页
如何在android处理图片( 图像二值化、锐化、转换格式).doc_第4页
如何在android处理图片( 图像二值化、锐化、转换格式).doc_第5页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

链接:如何在android处理图片( 图像二值化、锐化、转换格式)/thread-36559-1-1.htmlpackage net.wealthgod.client.center.ocr;import java.awt.Graphics2D;import java.awt.color.ColorSpace;import java.awt.geom.AffineTransform;import java.awt.image.AffineTransformOp;import java.awt.image.BufferedImage;import java.awt.image.ColorConvertOp;import java.awt.image.ColorModel;import java.awt.image.MemoryImageSource;import java.awt.image.PixelGrabber;public class ImageFilter private BufferedImage image; private int iw, ih; private int pixels; public ImageFilter(BufferedImage image) this.image = image; iw = image.getWidth(); ih = image.getHeight(); pixels = new intiw * ih; /* 图像二值化 */ public BufferedImage changeGrey() PixelGrabber pg = new PixelGrabber(image.getSource(), 0, 0, iw, ih, pixels, 0, iw); try pg.grabPixels(); catch (InterruptedException e) e.printStackTrace(); / 设定二值化的域值,默认值为100 int grey = 100; / 对图像进行二值化处理,Alpha值保持不变 ColorModel cm = ColorModel.getRGBdefault(); for (int i = 0; i grey) red = 255; else red = 0; if (cm.getGreen(pixelsi) grey) green = 255; else green = 0; if (cm.getBlue(pixelsi) grey) blue = 255; else blue = 0; pixelsi = alpha 24 | red 16 | green 8 | blue; / 将数组中的象素产生一个图像 return ImageIOHelper.imageProducerToBufferedImage(new MemoryImageSource(iw, ih, pixels, 0, iw); /* 提升清晰度,进行锐化 */ public BufferedImage sharp() PixelGrabber pg = new PixelGrabber(image.getSource(), 0, 0, iw, ih, pixels, 0, iw); try pg.grabPixels(); catch (InterruptedException e) e.printStackTrace(); / 象素的中间变量 int tempPixels = new intiw * ih; for (int i = 0; i iw * ih; i+) tempPixelsi = pixelsi; / 对图像进行尖锐化处理,Alpha值保持不变 ColorModel cm = ColorModel.getRGBdefault(); for (int i = 1; i ih - 1; i+) for (int j = 1; j 255) sharpRed = 255; if (sharpGreen 255) sharpGreen = 255; if (sharpBlue 255) sharpBlue = 255; tempPixelsi * iw + j = alpha 24 | sharpRed 16 | sharpGreen 8 | sharpBlue; / 将数组中的象素产生一个图像 return ImageIOHelper.imageProducerToBufferedImage(new MemoryImageSource(iw, ih, tempPixels, 0, iw); /* 中值滤波 */ public BufferedImage median() PixelGrabber pg = new PixelGrabber(image.getSource(), 0, 0, iw, ih, pixels, 0, iw); try pg.grabPixels(); catch (InterruptedException e) e.printStackTrace(); / 对图像进行中值滤波,Alpha值保持不变 ColorModel cm = ColorModel.getRGBdefault(); for (int i = 1; i ih - 1; i+) for (int j = 1; j = red5) if (red5 = red6) red = red5; else if (red4 = red6) red = red6; else red = red4; else if (red4 red6) red = red4; else if (red5 red6) red = red6; else red = red5; / int green2 = cm.getGreen(pixels(i - 1) * iw + j); int green4 = cm.getGreen(pixelsi * iw + j - 1); int green5 = cm.getGreen(pixelsi * iw + j); int green6 = cm.getGreen(pixelsi * iw + j + 1); / int green8 = cm.getGreen(pixels(i + 1) * iw + j); / 水平方向进行中值滤波 if (green4 = green5) if (green5 = green6) green = green5; else if (green4 = green6) green = green6; else green = green4; else if (green4 green6) green = green4; else if (green5 green6) green = green6; else green = green5; / int blue2 = cm.getBlue(pixels(i - 1) * iw + j); int blue4 = cm.getBlue(pixelsi * iw + j - 1); int blue5 = cm.getBlue(pixelsi * iw + j); int blue6 = cm.getBlue(pixelsi * iw + j + 1); / int blue8 = cm.getBlue(pixels(i + 1) * iw + j); / 水平方向进行中值滤波 if (blue4 = blue5) if (blue5 = blue6) blue = blue5; else if (blue4 = blue6) blue = blue6; else blue = blue4; else if (blue4 blue6) blue = blue4; else if (blue5 blue6) blue = blue6; else blue = blue5; pixelsi * iw + j = alpha 24 | red 16 | green 8 | blue; / 将数组中的象素产生一个图像 return ImageIOHelper.imageProducerToBufferedImage(new MemoryImageSource(iw, ih, pixels, 0, iw); /* 线性灰度变换 */ public BufferedImage lineGrey() PixelGrabber pg = new PixelGrabber(image.getSource(), 0, 0, iw, ih, pixels, 0, iw); try pg.grabPixels(); catch (InterruptedException e) e.printStackTrace(); / 对图像进行进行线性拉伸,Alpha值保持不变 ColorModel cm = ColorModel.getRGBdefault(); for (int i = 0; i = 255) red = 255; if (green = 255) green = 255; if (blue = 255) blue = 255; pixelsi = alpha 24 | red 16 | green 8 | blue; / 将数组中的象素产生一个图像 return ImageIOHelper.imageProducerToBufferedImage(new MemoryImageSource(iw, ih, pixels, 0, iw); /* 转换为黑白灰度图 */ public BufferedImage grayFilter() ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY); ColorConvertOp op = new ColorConvertOp(cs, null); return op.filter(image, null); /* 平滑缩放 */ public BufferedImage scaling(double s) AffineTransform tx = new AffineTransform(); tx.scale(s, s); AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR); return op.filter(image, null); public BufferedImage scale(Float s) int srcW = image.getWidth(); int srcH = image.getHeight(); int newW = Math.round(srcW * s); int newH = Math.round(srcH * s); / 先做水平方向上的伸缩变换 BufferedImage tmp=new BufferedImage(newW, newH, image.getType(); Graphics2D g= tmp.createGraphics(); for (int x = 0; x newW; x+) g.setClip(x, 0, 1, srcH); / 按比例放缩 g.drawImage(image, x - x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论