android下常用的图像处理程序(灰度化、线性灰度变化、二值化)。
1、图像灰度化:
[java]view plaincopy
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、对图像进行线性灰度变化
[java]view plaincopy
publicbitmaplinegrey(bitmapimage)
{
//得到图像的宽度和长度
intwidth=image.getwidth();
intheight=image.getheight();
//创建线性拉升灰度图像
bitmaplinegray=null;
linegray=image.copy(config.argb_8888,true);
//依次循环对图像的像素进行处理
for(inti=0;ifor(intj=0;j//得到每点的像素值
intcol=image.getpixel(i,j);
intalpha=col&0xff000000;
intred=(col&0x00ff0000)>>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
linegray.setpixel(i,j,newcolor);
}
}
returnlinegray;
}
3、对图像进行二值化
[java]view plaincopy
//该函数实现对图像进行二值化处理
publicbitmapgray2binary(bitmapgraymap){
//得到图形的宽度和长度
intwidth=graymap.getwidth();
intheight=graymap.getheight();
//创建二值化图像
bitmapbinarymap=null;
binarymap=graymap.copy(config.argb_8888,true);
//依次循环,对图像的像素进行处理
for(inti=0;ifor(intj=0;j//得到当前像素的值
intcol=binarymap.getpixel(i,j);
//得到alpha通道的值
intalpha=col&0xff000000;
//得到图像的像素rgb的值
intred=(col&0x00ff0000)>>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
binarymap.setpixel(i,j,newcolor);
}
}
returnbinarymap;
}