39.
40.
41.
PixelGrabber pg =
new
PixelGrabber(image.getSource(),
0
,
0
, iw, ih, pixels,
0
, iw);
42.
try
{
43.
pg.grabPixels();
44.
}
catch
(InterruptedException e) {
45.
e.printStackTrace();
46.
}
47.
// 设定二值化的域值,默认值为 100
48.
int
grey =
100
;
49.
// 对图像进行二值化处理,Alpha 值保持不变
50.
ColorModel cm = ColorModel.getRGBdefault();
51.
for
(
int
i =
0
; i < iw * ih; i++) {
52.
int
red, green, blue;
53.
int
alpha = cm.getAlpha(pixels[i]);
54.
if
(cm.getRed(pixels[i]) > grey) {
55.
red =
255
;
56.
}
else
{
57.
red =
0
;
58.
}
59.
if
(cm.getGreen(pixels[i]) > grey) {
60.
green =
255
;
61.
}
else
{
62.
green =
0
;
63.
}
64.
if
(cm.getBlue(pixels[i]) > grey) {
65.
blue =
255
;
66.
}
else
{
67.
blue =
0
;
68.
}
69.
pixels[i] = alpha <<
24
| red <<
16
| green <<
8
| blue;
//通过移位重新构成某
一点像素的 RGB 值
70.
}
71.
// 将数组中的象素产生一个图像
72.
Image tempImg=Toolkit.getDefaultToolkit().createImage(
new
MemoryImageSourc
e(iw,ih, pixels,
0
, iw));
73.
image =
new
BufferedImage(tempImg.getWidth(
null
),tempImg.getHeight(
null
), B
ufferedImage.TYPE_INT_BGR );
74.
image.createGraphics().drawImage(tempImg,
0
,
0
,
null
);
75.
return
image;
76.
77.
}
78.
79.
/** 中值滤波
*/