要するに、あるイメージを白黒2階調に変換したイメージを作りたい、ということと考えればいいんでしょうか?
方法はいろいろ考えられますが、まぁフィルターを使うのが一番手っ取り早いでしょう。
イメージをBufferedImageとして用意し、ByteLookupTableを作成、それをもとにLookupOpを作ってフィルター処理します。
あらかじめ、0~255の各輝度の階調ごとに変換する値を指定したbyte配列を用意しておきます。これを使って、BufferedImageの輝度をフィルター処理します。
// import java.awt.Image.*;
BufferedImage img1;
BufferedImage img2;
ing w = 500; // イメージのwidth
int h = 300; // イメージのheight
img = Toolkit.getDafaultToolkit.getImage("hoge.jpg");
try {
img1 = new BufferedImage(w,h,BUfferedImage.TYPE_INT_ARGB);
img2 = new BufferedImage(w,h,BUfferedImage.TYPE_INT_RGB);
Graphics2D g = img1.createGraphics();
g.drawImage(img,0,0,this); // とりあえずthisで
g.dispose();
byte[] arr = new byte[256]; // これが変換用のテーブル
for(int i = 0;i < 256;i++)
arr[i] = (byte)(i < 128 ? 0 : 255); // テーブル準備
ByteLookupTable lt = new ByteLookupTable(0,arr);
LookupOp lo = new LookupOp(lt,null);
lo.filter(img1,img2); // フィルター処理
} catch ・・・以下略・・・
例えば、こんな感じで2階調のイメージにフィルター処理されたimg2ができあがります。階調の感じは、byte配列の値をいろいろと調整すればいいでしょう。
BufferedImage,ByteLookupTable,LookupOpについて調べてみるとよいでしょう。