background image

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.

    

/** 中值滤波

 */