1,图像灰度化:
公共位图bitmap2Gray(位图bmSrc) {//得到图片的长和宽 int宽度=bmSrc.getWidth (); int高度=bmSrc.getHeight ();//创建目标灰度图像 位图bmpGray=零; bmpGray=位图。createBitmap(宽度、高度、Bitmap.Config.RGB_565);//创建画布 帆布c=新画布(bmpGray); 涂漆=new (); ColorMatrix厘米=new ColorMatrix (); cm.setSaturation (0); ColorMatrixColorFilter f=new ColorMatrixColorFilter(厘米); paint.setColorFilter (f); c。drawBitmap (bmSrc 0 0、油漆); 返回bmpGray; } >之前2,对图像进行线性灰度变化
公共位图lineGrey(位图图像){//得到图像的宽度和长度 int宽度=image.getWidth (); int高度=image.getHeight ();//创建线性拉升灰度图像 位图linegray=零; linegray=image.copy(配置。ARGB_8888,真正的);//依次循环对图像的像素进行处理 for (int i=0;我& lt;宽度;我+ +){ for (int j=0;j & lt;高度;j + +) {//得到每点的像素值 int坳=形象。获取像素(i, j); intα=坳,0 xff000000; int红色=(坳,0 x00ff0000)在祝辞16; int绿色=(坳,0 x0000ff00)在祝辞8; int蓝色=(坳,0 x000000ff);//增加了图像的亮度 红色=(int)(1.1 *红+ 30); 绿色=(int)(1.1 *绿色+ 30); 蓝色=(int)(1.1 *蓝色+ 30);//对图像像素越界进行处理 如果(红色祝辞=255) { 红色=255; } 如果(绿色祝辞=255){ 绿色=255; } 如果(蓝色祝辞=255){ 蓝色=255; }//新的ARGB int newColor=α|(红& lt; & lt;16)|(绿色& lt; & lt;8)|蓝色;//设置新图像的RGB值 linegray。setPixel (i, j, newColor); } } 返回linegray; } >之前3,对图像进行二值化
公共位图gray2Binary(位图graymap) {//得到图形的宽度和长度 int宽度=graymap.getWidth (); int高度=graymap.getHeight ();//创建二值化图像 位图binarymap=零; binarymap=graymap.copy(配置。ARGB_8888,真正的);//依次循环,对图像的像素进行处理 for (int i=0;我& lt;宽度;我+ +){ for (int j=0;j & lt;高度;j + +) {//得到当前像素的值 int坳=binarymap。获取像素(i, j);//得到α通道的值 intα=坳,0 xff000000;//得到图像的像素RGB的值 int红色=(坳,0 x00ff0000)在祝辞16; int绿色=(坳,0 x0000ff00)在祝辞8; int蓝色=(坳,0 x000000ff);//用公式X R + 0.59=0.3×××0.11 G + B计算出X代替原来的RGB int灰色=(int)(红色(浮动)* 0.3 +(浮动)绿色* 0.59 +蓝色(浮动)* 0.11);//对图像进行二值化处理 如果(灰色& lt;=95) { 灰色=0; 其他}{ 灰色=255; }//新的ARGB int newColor=α|(灰色& lt; & lt;16)|(灰色& lt; & lt;8)|灰色;//设置新图像的当前像素值 binarymap。setPixel (i, j, newColor); } } 返回binarymap; } >之前以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Android实现图像灰度化,线性灰度变化和二值化处理方法