二值化的理解就是讲图片上超过某阈值的像素设为A,不超过的设为B
以至图片只存在俩种像素。
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
public class Binaryization
{
static BufferedImage bufferedIamge,bufferedImageT;
public Binaryization(){
}
public static BufferedImage binaryization(BufferedImage image){
int width=image.getWidth();
int height=image.getHeight();
int r=0;
bufferedImageT= new BufferedImage(width,height, BufferedImage.TYPE_3BYTE_BGR );
for(int y=0;y<height;y++){
for(int x=0;x<width;x++){
Color color = new Color(image.getRGB(x,y));
int gray = (color.getRed() + color.getGreen() + color.getBlue())/3;
//设置阈值
if (gray <100){
r = 255;
}else{r=0;}
Color color_end = new Color(r,r,r);
bufferedImageT.setRGB(x,y,color_end.getRGB());
}
}
return bufferedImageT;
}
public static void main(String[] args)
{
try {
bufferedIamge = ImageIO.read(new File("C:\\Users\\blue\\Desktop\\图像第一步 -图像纹理\\test18.png"));
} catch (IOException e) {
e.printStackTrace();
}
try{
RenderedImage rendImage =binaryization(bufferedIamge);
File file = new File("C:\\Users\\blue\\Desktop\\图像第一步 -图像纹理\\test17 - 副本二值化.png");
ImageIO.write(rendImage, "png", file);
}catch(IOException e){
System.out.println(e);
}
}
}