Android实现图像灰度化、线性灰度变化和二值化处理方法
1、图像灰度化:
publicBitmapbitmap2Gray(BitmapbmSrc){ //得到图片的长和宽 intwidth=bmSrc.getWidth(); intheight=bmSrc.getHeight(); //创建目标灰度图像 BitmapbmpGray=null; bmpGray=Bitmap.createBitmap(width,height,Bitmap.Config.RGB_565); //创建画布 Canvasc=newCanvas(bmpGray); Paintpaint=newPaint(); ColorMatrixcm=newColorMatrix(); cm.setSaturation(0); ColorMatrixColorFilterf=newColorMatrixColorFilter(cm); paint.setColorFilter(f); c.drawBitmap(bmSrc,0,0,paint); returnbmpGray; }
2、对图像进行线性灰度变化
publicBitmaplineGrey(Bitmapimage){ //得到图像的宽度和长度 intwidth=image.getWidth(); intheight=image.getHeight(); //创建线性拉升灰度图像 Bitmaplinegray=null; linegray=image.copy(Config.ARGB_8888,true); //依次循环对图像的像素进行处理 for(inti=0;i>16; intgreen=(col&0x0000FF00)>>8; intblue=(col&0x000000FF); //增加了图像的亮度 red=(int)(1.1*red+30); green=(int)(1.1*green+30); blue=(int)(1.1*blue+30); //对图像像素越界进行处理 if(red>=255) { red=255; } if(green>=255){ green=255; } if(blue>=255){ blue=255; } //新的ARGB intnewColor=alpha|(red<<16)|(green<<8)|blue; //设置新图像的RGB值 linegray.setPixel(i,j,newColor); } } returnlinegray; }
3、对图像进行二值化
publicBitmapgray2Binary(Bitmapgraymap){ //得到图形的宽度和长度 intwidth=graymap.getWidth(); intheight=graymap.getHeight(); //创建二值化图像 Bitmapbinarymap=null; binarymap=graymap.copy(Config.ARGB_8888,true); //依次循环,对图像的像素进行处理 for(inti=0;i>16; intgreen=(col&0x0000FF00)>>8; intblue=(col&0x000000FF); //用公式X=0.3×R+0.59×G+0.11×B计算出X代替原来的RGB intgray=(int)((float)red*0.3+(float)green*0.59+(float)blue*0.11); //对图像进行二值化处理 if(gray<=95){ gray=0; }else{ gray=255; } //新的ARGB intnewColor=alpha|(gray<<16)|(gray<<8)|gray; //设置新图像的当前像素值 binarymap.setPixel(i,j,newColor); } } returnbinarymap; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。