80.
public
BufferedImage getMedian() {
81.
PixelGrabber pg =
new
PixelGrabber(image.getSource(),
0
,
0
, iw, ih,
82.
pixels,
83.
0
, iw);
84.
try
{
85.
pg.grabPixels();
86.
}
catch
(InterruptedException e) {
87.
e.printStackTrace();
88.
}
89.
// 对图像进行中值滤波,Alpha 值保持不变
90.
ColorModel cm = ColorModel.getRGBdefault();
91.
for
(
int
i =
1
; i < ih -
1
; i++) {
92.
for
(
int
j =
1
; j < iw -
1
; j++) {
93.
int
red, green, blue;
94.
int
alpha = cm.getAlpha(pixels[i * iw + j]);
95.
96.
// int red2 = cm.getRed(pixels[(i - 1) * iw + j]);
97.
int
red4 = cm.getRed(pixels[i * iw + j -
1
]);
98.
int
red5 = cm.getRed(pixels[i * iw + j]);
99.
int
red6 = cm.getRed(pixels[i * iw + j +
1
]);
100.
// int red8 = cm.getRed(pixels[(i + 1) * iw + j]);
101.
102.
// 水平方向进行中值滤波
103.
if
(red4 >= red5) {
104.
if
(red5 >= red6) {
105.
red = red5;
106.
}
else
{
107.
if
(red4 >= red6) {
108.
red = red6;
109.
}
else
{
110.
red = red4;
111.
}
112.
}
113.
}
else
{
114.
if
(red4 > red6) {
115.
red = red4;
116.
}
else
{
117.
if
(red5 > red6) {
118.
red = red6;
119.
}
else
{
120.
red = red5;
121.
}
122.
}
123.
}