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;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。