小菜樂園

          生活就是一杯茶

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            8 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks
          我們也可以采用緩沖區來對圖像進行處理。

          在JAVA2D中圖像處理模型是即時模式。

          利用即時模式圖像處理模型可以在內存中存儲固定分辨率的圖像,也可以對圖像數據進行過濾處理。

          JAVA2D在圖像處理方面提供一對接口:
          1
          BufferedImageOp和RasterOp。
                      

          實現這兩個接口的類包括:
          1
          2
          3
          4
          5
          AffineTransformOp,
                      BandCombineOp,
                      ColorConvertOp,
                      ConvolveOp,
                      LookupOp和RescaleOp等等
                      


          他們用來定義緩沖區圖像和光柵圖像的操作。
          也可以產生幾何變換,鈍化,銳化,增強對比,閥值,和圖像顏色校正等圖像處理效果。


          如何使用緩沖區:

          PS:im是某個Image的引用
          1)創建。
          1
          BufferedImage bi= new BufferedImage(getWidth(),getHight(),BufferedImage.TYPE_INT_ARGB);
                      

          還有三種不同的構造器。參看文檔。
          2)緩沖區上繪圖。
          先返回圖像的上下文:
          1
          Graphics2D big=bi.creatGraphics();
                      

          利用這個對象將欲繪制的圖像送入緩沖區。
          1
           big.drawImage(im,0,0,this);
                      

          3)顯示緩沖區圖像,利用Graphics2D 的drawImage方法將緩沖區圖像繪制到屏幕上。
          比如在JPanel的paintComponent() 方法當中
          1
          2
          Graphics2D g2D=(Grahpics2D)g;
                      g2D.drawImage(bi,0,0,this);
                      


          下面步驟分析我總是假設人們需要在一個顯示面板上顯示,所以最后都加入了一個repaint();步驟
          1
          2
          查找表過濾器:
                      LookupOp:rgba四個參數進行修改。
                      


          1
          RescaleOp:重調過濾器:類似前者。
                      

          思路:
          1)創建RescaleFactor和Offsets,他們可以是float型,也可以是float類型的數組。
          2)創建RescaleOp對象。
          RescaleOp rescale=new RescaleOp(scaleFactor,offset,null);
          3)將過濾應用于緩沖rescale.filter(bi,bi);
          4)repaint();

          1
          ColorConvertOp色彩轉換過濾——灰度<->彩色
                      

          1)創建色彩空間對象.
          ColorSpace cs=ColorSpace.getInstance(ColorSpace.CS_GRAY);
          2)創建顏色過濾器
          ColorConvertOp op=new ColorConvertOp(cs,null);
          3)將過濾應用于緩沖op.filter(bi,bi);
          4)repaint();

          1
          ConvolveOp卷積過濾實例
                      

          1)創建float類型的數組,不同的數組決定了不同的處理功能。
          //下面可以達到銳化效果
          float data[]={-1.0f,-1.0f,-1.0f,-1.0f,9.0f,-1.0f,-1.0f,-1.0f,-1.0f,}
          //下面可以達到霧化效果
          float data[]={1.0f/9.0f,1.0f/10.0f,1.0f/9.0f,1.0f/12.0f,1.0f/10.0f,1.0f/9.0f,1.0f/9.0f,1.0f/10.0f,1.0f/9.0f,}
          //下面可以達到邊緣化效果
          float data[]={0.0f,1.0f,0.0f, -1.0f,4.0f,-1.0f , 0.0f,-1.0f,0.0f}
          2)創建卷積核對像_前兩個參數表明寬度和高度。
          Kernel kernel=new Kernel(3,3,data);
          3)創建卷積過濾器實例n ConvolveOp convolve=new Convolve(kernel,Convolve.EDGE_NO_OP,null);
          4)將過濾應用于緩沖convolve.filter(bisrc,bidest);
          5)repaint();


          1
          AffineTransform仿射變換:
                      

          對緩沖區圖像進行縮放,拉伸,平移,旋轉,等等。

          1)定義仿射變換:AffineTransform類對象
          :AffineTransform transform =new AffineTransform();
          2)對仿射變換對象進行設置變換,包括縮放,平移,拉伸,旋轉等等。
          transform.setToScale(double x,double y);//縮放
          transform.setToShear(double x,double y);//平移
          transform.setToTranslation(double x,double y);//拉伸
          transform.setToRotation(double x,double y);//旋轉
          3)根據仿射變換過濾器創建過濾器對象
          AffineTransformOp op=new AffineTransformOp(transform,null);
          4)將過濾應用于緩沖op.filter(bisrc,bidest);
          5)repaint();

          posted on 2007-08-17 10:58 小菜 閱讀(2052) 評論(0)  編輯  收藏 所屬分類: Java圖形圖像
          主站蜘蛛池模板: 道真| 肇州县| 仁布县| 屏东县| 太仆寺旗| 福清市| 屯门区| 浪卡子县| 冀州市| 郯城县| 石棉县| 轮台县| 沧州市| 涞源县| 连云港市| 大同县| 彰武县| 元江| 岫岩| 永德县| 平原县| 张家口市| 宣城市| 海晏县| 分宜县| 兰州市| 民县| 木兰县| 定安县| 英吉沙县| 保康县| 屯留县| 夏津县| 梅河口市| 屯昌县| 九龙坡区| 抚顺市| 汝南县| 钦州市| 普宁市| 沙坪坝区|