展开全部
//运行以下程序即可
publicclassImageInit{
62616964757a686964616fe59b9ee7ad9431333337613233BufferedImageimage;
privateintiw,ih;
privateint[]pixels;
publicImageInit(BufferedImageimage){
this.image=image;
iw=image.getWidth();
ih=image.getHeight();
pixels=newint[iw*ih];
}
publicBufferedImagechangeGrey(){
PixelGrabberpg=newPixelGrabber(image.getSource(),0,0,iw,ih,
pixels,0,iw);
try{
pg.grabPixels();
}catch(InterruptedExceptione){
e.printStackTrace();
}
//设定二值化的域值,默认值为100
intgrey=100;
//对图像进行二值化处理,Alpha值保持不变
ColorModelcm=ColorModel.getRGBdefault();
for(inti=0;i
intred,green,blue;
intalpha=cm.getAlpha(pixels[i]);
if(cm.getRed(pixels[i])>grey){
red=255;
}else{
red=0;
}
if(cm.getGreen(pixels[i])>grey){
green=255;
}else{
green=0;
}
if(cm.getBlue(pixels[i])>grey){
blue=255;
}else{
blue=0;
}
pixels[i]=alpha<
}
//将数组中的象素产生一个图像
ImagetempImg=Toolkit.getDefaultToolkit().createImage(
newMemoryImageSource(iw,ih,pixels,0,iw));
image=newBufferedImage(tempImg.getWidth(null),
tempImg.getHeight(null),BufferedImage.TYPE_INT_BGR);
image.createGraphics().drawImage(tempImg,0,0,null);
returnimage;
}
publicBufferedImagegetMedian(){
PixelGrabberpg=newPixelGrabber(image.getSource(),0,0,iw,ih,
pixels,0,iw);
try{
pg.grabPixels();
}catch(InterruptedExceptione){
e.printStackTrace();
}
//对图像进行中值滤波,Alpha值保持不变
ColorModelcm=ColorModel.getRGBdefault();
for(inti=1;i
for(intj=1;j
intred,green,blue;
intalpha=cm.getAlpha(pixels[i*iw+j]);
//intred2=cm.getRed(pixels[(i-1)*iw+j]);
intred4=cm.getRed(pixels[i*iw+j-1]);
intred5=cm.getRed(pixels[i*iw+j]);
intred6=cm.getRed(pixels[i*iw+j+1]);
//intred8=cm.getRed(pixels[(i+1)*iw+j]);
//水平方向进行中值滤波
if(red4>=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;
}
}
}
intgreen4=cm.getGreen(pixels[i*iw+j-1]);
intgreen5=cm.getGreen(pixels[i*iw+j]);
intgreen6=cm.getGreen(pixels[i*iw+j+1]);
//水平方向进行中值滤波
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;
}
}
}
//intblue2=cm.getBlue(pixels[(i-1)*iw+j]);
intblue4=cm.getBlue(pixels[i*iw+j-1]);
intblue5=cm.getBlue(pixels[i*iw+j]);
intblue6=cm.getBlue(pixels[i*iw+j+1]);
//intblue8=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;
}
}
}
pixels[i*iw+j]=alpha<
|blue;
}
}
//将数组中的象素产生一个图像
ImagetempImg=Toolkit.getDefaultToolkit().createImage(
newMemoryImageSource(iw,ih,pixels,0,iw));
image=newBufferedImage(tempImg.getWidth(null),
tempImg.getHeight(null),BufferedImage.TYPE_INT_BGR);
image.createGraphics().drawImage(tempImg,0,0,null);
returnimage;
}
publicBufferedImagegetGrey(){
ColorConvertOpccp=newColorConvertOp(
ColorSpace.getInstance(ColorSpace.CS_GRAY),null);
returnimage=ccp.filter(image,null);
}
//Brightenusingalinearformulathatincreasesallcolorvalues
publicBufferedImagegetBrighten(){
RescaleOprop=newRescaleOp(1.25f,0,null);
returnimage=rop.filter(image,null);
}
//Blurby"convolving"theimagewithamatrix
publicBufferedImagegetBlur(){
float[]data={.1111f,.1111f,.1111f,.1111f,.1111f,.1111f,
.1111f,.1111f,.1111f,};
ConvolveOpcop=newConvolveOp(newKernel(3,3,data));
returnimage=cop.filter(image,null);
}
//Sharpenbyusingadifferentmatrix
publicBufferedImagegetSharpen(){
float[]data={0.0f,-0.75f,0.0f,-0.75f,4.0f,-0.75f,0.0f,
-0.75f,0.0f};
ConvolveOpcop=newConvolveOp(newKernel(3,3,data));
returnimage=cop.filter(image,null);
}
//11)Rotatetheimage180degreesaboutitscenterpoint
publicBufferedImagegetRotate(){
AffineTransformOpatop=newAffineTransformOp(
AffineTransform.getRotateInstance(Math.PI,
image.getWidth()/2,image.getHeight()/2),
AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
returnimage=atop.filter(image,null);
}
publicBufferedImagegetProcessedImg(){
returnimage;
}
publicstaticvoidmain(String[]args)throwsIOException{
StringfilePath="F:/k7qp5.png";
FileInputStreamfin=newFileInputStream(filePath);
BufferedImagebi=ImageIO.read(fin);
ImageInitflt=newImageInit(bi);
flt.changeGrey();
flt.getGrey();
flt.getBrighten();
bi=flt.getProcessedImg();
Stringpname=filePath.substring(0,filePath.lastIndexOf("."));
Filefile=newFile(pname+".jpg");
ImageIO.write(bi,"jpg",file);
}
}