OSDN Git Service

[更新]NyARToolkit/nyatlaブランチ
authornyatla <nyatla@7cac0a50-4618-4814-88d0-24b83990f816>
Mon, 25 Aug 2008 13:54:43 +0000 (13:54 +0000)
committernyatla <nyatla@7cac0a50-4618-4814-88d0-24b83990f816>
Mon, 25 Aug 2008 13:54:43 +0000 (13:54 +0000)
git-svn-id: http://svn.sourceforge.jp/svnroot/nyartoolkit/NyARToolkit@122 7cac0a50-4618-4814-88d0-24b83990f816

62 files changed:
branches/nyatla/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/NyarToolkitLinkTest.java
branches/nyatla/sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/JavaSimpleLite.java
branches/nyatla/sample/qt/jp/nyatla/nyartoolkit/qt/utils/QtNyARRaster_RGB.java
branches/nyatla/src.utils/java3d/jp/nyatla/nyartoolkit/java3d/utils/NyARSingleMarkerBehaviorHolder.java
branches/nyatla/src.utils/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfCameraCapture.java
branches/nyatla/src.utils/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfNyARRaster_RGB.java
branches/nyatla/src.utils/jogl/jp/nyatla/nyartoolkit/jogl/utils/GLNyARDetectMarker.java
branches/nyatla/src.utils/jogl/jp/nyatla/nyartoolkit/jogl/utils/GLNyARRaster_RGB.java
branches/nyatla/src.utils/jogl/jp/nyatla/nyartoolkit/jogl/utils/GLNyARSingleDetectMarker.java
branches/nyatla/src.utils/qt/jp/nyatla/nyartoolkit/qt/sample/NyarToolkitLinkTest.java
branches/nyatla/src.utils/qt/jp/nyatla/nyartoolkit/qt/utils/QtNyARRaster_RGB.java
branches/nyatla/src/jp/nyatla/nyartoolkit/base/Config.java [deleted file]
branches/nyatla/src/jp/nyatla/nyartoolkit/base/Param.java [deleted file]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/NyARDetectMarker.java
branches/nyatla/src/jp/nyatla/nyartoolkit/core/NyARDetectSquare.java
branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/NyARLabelingImage.java [moved from branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/NyLabelingImage.java with 54% similarity]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/NyARLabelingLabel.java [moved from branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/NyLabelingLabel.java with 83% similarity]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/NyARLabelingLabelList.java [moved from branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/NyLabelingLabelList.java with 81% similarity]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/NyLabelingRaster.java [deleted file]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/processor/ARToolKitLabeling.java [moved from branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/processor/NyARLabeling.java with 90% similarity]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/processor/INyARLabeling.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/processor/INyLabeling.java [deleted file]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt.java
branches/nyatla/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt_BlackWhite.java
branches/nyatla/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt_Color_WITHOUT_PCA.java
branches/nyatla/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt_Color_WITH_PCA.java
branches/nyatla/src/jp/nyatla/nyartoolkit/core/pickup/INyARColorPatt.java [moved from branches/nyatla/src/jp/nyatla/nyartoolkit/core/pickup/INyColorPatt.java with 93% similarity]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/pickup/NyARColorPatt_O1.java
branches/nyatla/src/jp/nyatla/nyartoolkit/core/pickup/NyARColorPatt_O3.java
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/NyARRaster.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/NyARRaster_BGRA.java
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/NyARRaster_BasicClass.java
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/NyARRaster_Blank.java
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/NyARRaster_Int2d.java [moved from branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/INyARRaster.java with 59% similarity]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/NyARRaster_RGB.java
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/INyARRasterFilter.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_AreaAverage.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_Edge.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbAnd.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbMul.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbOr.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbSum.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbXor.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_Threshold.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/INyARRasterReader.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/INyARRasterReaderFactory.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/NyARRasterReaderFactory_RgbMul.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/NyARRasterReaderFactory_RgbTotal.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/NyARRasterReaderFactory_Test.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/threshold/INyARRasterThresholdDetector.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/threshold/NyARRasterThresholdDetector_PTile.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/threshold/NyARRasterThresholdDetector_SlidePTile.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/transmat/NyARTransRot.java
branches/nyatla/src/jp/nyatla/nyartoolkit/core/types/NyARSquare.java [new file with mode: 0644]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/types/NySquare.java [deleted file]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/types/TNyARIntLine.java [moved from branches/nyatla/src/jp/nyatla/nyartoolkit/core/types/TNyIntLine.java with 80% similarity]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/types/TNyARIntPoint.java [moved from branches/nyatla/src/jp/nyatla/nyartoolkit/core/types/TNyIntPoint.java with 70% similarity]
branches/nyatla/src/jp/nyatla/nyartoolkit/core/types/TNyARIntSize.java [moved from branches/nyatla/src/jp/nyatla/nyartoolkit/core/types/TNyIntSize.java with 85% similarity]
branches/nyatla/src/jp/nyatla/nyartoolkit/detector/NyARDetectMarker.java
branches/nyatla/src/jp/nyatla/nyartoolkit/detector/NyARSingleDetectMarker.java
branches/nyatla/test/jp/nyatla/nyartoolkit/dev/LabelingCamera.java [new file with mode: 0644]
branches/nyatla/test/jp/nyatla/nyartoolkit/dev/LabelingTest.java [new file with mode: 0644]

index cb731a2..d65a770 100644 (file)
@@ -177,7 +177,7 @@ public class JavaSimpleLite implements GLEventListener,JmfCaptureListener
             //画像チェックしてマーカー探して、背景を書く\r
             boolean is_marker_exist;\r
             synchronized(cap_image){\r
-               is_marker_exist=nya.detectMarkerLite(cap_image,110);\r
+               is_marker_exist=nya.detectMarkerLite(cap_image,20);\r
                //背景を書く\r
                glnya.drawBackGround(cap_image, 1.0);\r
             }\r
index 023d8ab..e735e29 100644 (file)
@@ -13,10 +13,10 @@ import java.awt.image.DataBuffer;
 import java.awt.image.WritableRaster;\r
 \r
 import jp.nyatla.nyartoolkit.NyARException;\r
-import jp.nyatla.nyartoolkit.core.raster.INyARRaster;\r
+import jp.nyatla.nyartoolkit.core.raster.NyARRaster;\r
 \r
 \r
-public class QtNyARRaster_RGB implements INyARRaster\r
+public class QtNyARRaster_RGB implements NyARRaster\r
 {\r
     protected byte[] ref_buf;\r
     protected int width=0;\r
index 5bfb073..c1a0dd6 100644 (file)
@@ -13,13 +13,13 @@ import javax.media.j3d.*;
 import javax.vecmath.*;\r
 \r
 import jp.nyatla.nyartoolkit.core.NyARParam;\r
-import jp.nyatla.nyartoolkit.core.NyARTransMatResult;\r
 import jp.nyatla.nyartoolkit.detector.NyARSingleDetectMarker;\r
 import jp.nyatla.nyartoolkit.jmf.*;\r
 import jp.nyatla.nyartoolkit.jmf.utils.JmfCameraCapture;\r
 import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureListener;\r
 import jp.nyatla.nyartoolkit.*;\r
 import jp.nyatla.nyartoolkit.core.*;\r
+import jp.nyatla.nyartoolkit.core.transmat.NyARTransMatResult;\r
 \r
 /**\r
  * NyARToolkitと連動したBehaviorを返却するクラスです。\r
index f53213b..d7ad232 100644 (file)
@@ -26,7 +26,7 @@ public class JmfCameraCapture
 {\r
     private Dimension image_size;\r
     private JmfCaptureListener capture_listener;\r
-    private DataSource jmf_data_source;\r
+//    private DataSource jmf_data_source;\r
     private MonitorStream jmf_monitor_stream;\r
     private Processor jmf_processor;\r
     private VideoFormat jmf_video_format;\r
@@ -83,7 +83,7 @@ public class JmfCameraCapture
         // that is also the MonitorStream object.\r
         jmf_monitor_stream=(MonitorStream)ds.getControl("jmfsample.MonitorStream");\r
        jmf_monitor_stream.setCaptureListener(capture_listener);\r
-        jmf_data_source=ds;\r
+//        jmf_data_source=ds;\r
         jmf_processor=processor;\r
         jmf_processor.start();\r
     }\r
index 39490f3..4fe579a 100644 (file)
@@ -10,21 +10,20 @@ package jp.nyatla.nyartoolkit.jmf.utils;
 \r
 import javax.media.format.RGBFormat;\r
 import java.awt.Dimension;\r
-import jp.nyatla.nyartoolkit.NyARException;\r
-import jp.nyatla.nyartoolkit.core.raster.INyARRaster;\r
+import jp.nyatla.nyartoolkit.*;\r
+import jp.nyatla.nyartoolkit.core.raster.NyARRaster;\r
+import jp.nyatla.nyartoolkit.core.raster.NyARRaster_BasicClass;\r
 \r
 \r
-public class JmfNyARRaster_RGB implements INyARRaster\r
+public class JmfNyARRaster_RGB  extends NyARRaster_BasicClass\r
 {\r
     public final static int PIXEL_ORDER_RGB=1;\r
     public final static int PIXEL_ORDER_BGR=2;\r
-    protected int pix_type;\r
-    private int red_idx;\r
-    private int green_idx;\r
-    private int blue_idx;\r
-    protected byte[] ref_buf;\r
-    protected int width=0;\r
-    protected int height=0;\r
+    protected int _pix_type;\r
+    private int _red_idx;\r
+    private int _green_idx;\r
+    private int _blue_idx;\r
+    protected byte[] _ref_buf;\r
 \r
     /**\r
      * RGB形式のJMFバッファをラップするオブジェクトをつくります。\r
@@ -33,10 +32,47 @@ public class JmfNyARRaster_RGB implements INyARRaster
      */\r
     public JmfNyARRaster_RGB(int i_width,int i_height)\r
     {\r
-       ref_buf=null;\r
-       width=i_width;\r
-       height=i_height;\r
+       this._ref_buf=null;\r
+       this._size.w=i_width;\r
+       this._size.h=i_height;\r
     }\r
+    public void getPixel(int i_x,int i_y,int[] i_rgb)\r
+    {\r
+        int bp=(i_x+i_y*this._size.w)*3;\r
+        byte[] ref=this._ref_buf;\r
+        i_rgb[0]=(ref[bp+this._red_idx] & 0xff);//R\r
+        i_rgb[1]=(ref[bp+this._green_idx] & 0xff);//G\r
+        i_rgb[2]=(ref[bp+this._blue_idx] & 0xff);//B\r
+    }\r
+    public void getPixelSet(int[] i_x,int i_y[],int i_num,int[] o_rgb)\r
+    {\r
+       int ri=this._red_idx;\r
+       int bi=this._green_idx;\r
+       int gi=this._blue_idx;\r
+       int width=this._size.w;\r
+       byte[] ref=this._ref_buf;\r
+       int bp;\r
+       for(int i=i_num-1;i>=0;i--){\r
+           bp=(i_x[i]+i_y[i]*width)*3;\r
+           o_rgb[i*3+0]=(ref[bp+ri] & 0xff);//R\r
+           o_rgb[i*3+1]=(ref[bp+gi] & 0xff);//G\r
+           o_rgb[i*3+2]=(ref[bp+bi] & 0xff);//B\r
+       }       \r
+       return;\r
+    }\r
+    public Object getBufferObject()\r
+    {\r
+       return this._ref_buf;\r
+    }\r
+    public int getBufferType() throws NyARException\r
+    {\r
+       switch(this._pix_type){\r
+       case PIXEL_ORDER_RGB:return BUFFERFORMAT_BYTE_R8G8B8_24;\r
+       case PIXEL_ORDER_BGR:return BUFFERFORMAT_BYTE_B8G8R8_24;\r
+       default:\r
+           throw new NyARException();\r
+       }\r
+    }    \r
     /**\r
      * フォーマットを解析して、インスタンスのフォーマットプロパティを初期化します。\r
      * \r
@@ -47,19 +83,19 @@ public class JmfNyARRaster_RGB implements INyARRaster
     {\r
        //データサイズの確認\r
         Dimension s=i_fmt.getSize();\r
-        if(width!=s.width || height !=s.height){\r
+        if(this._size.w!=s.width || this._size.h !=s.height){\r
            throw new NyARException();\r
         }\r
        //データ配列の確認\r
-       red_idx  =i_fmt.getRedMask()-1;\r
-       green_idx=i_fmt.getGreenMask()-1;\r
-       blue_idx =i_fmt.getBlueMask()-1;\r
+       this._red_idx  =i_fmt.getRedMask()-1;\r
+       this._green_idx=i_fmt.getGreenMask()-1;\r
+       this._blue_idx =i_fmt.getBlueMask()-1;\r
        \r
        //色配列の特定\r
-       if(red_idx==0 && blue_idx==2){\r
-           pix_type=PIXEL_ORDER_RGB;\r
-       }else if(red_idx==2 && blue_idx==0){\r
-           pix_type=PIXEL_ORDER_BGR;\r
+       if(this._red_idx==0 && this._blue_idx==2){\r
+           this._pix_type=PIXEL_ORDER_RGB;\r
+       }else if(this._red_idx==2 && this._blue_idx==0){\r
+           this._pix_type=PIXEL_ORDER_BGR;\r
        }else{\r
            throw new NyARException("Unknown pixel order.");\r
        }       \r
@@ -76,39 +112,8 @@ public class JmfNyARRaster_RGB implements INyARRaster
     public void setBuffer(javax.media.Buffer i_buffer) throws NyARException\r
     {\r
        initFormatProperty((RGBFormat)i_buffer.getFormat());\r
-        ref_buf=(byte[])i_buffer.getData();\r
-    }\r
-    public int getPixelTotal(int i_x,int i_y)\r
-    {\r
-        int bp=(i_x+i_y*width)*3;\r
-        byte[] ref=this.ref_buf;\r
-        return (ref[bp] & 0xff)+(ref[bp+1] & 0xff)+(ref[bp+2] & 0xff);\r
-    }\r
-    public void getPixelTotalRowLine(int i_row,int[] o_line)\r
-    {\r
-        final byte[] ref=this.ref_buf;\r
-        int bp=(i_row+1)*this.width*3-3;\r
-        for(int i=this.width-1;i>=0;i--){\r
-           o_line[i]=(ref[bp] & 0xff)+(ref[bp+1] & 0xff)+(ref[bp+2] & 0xff);\r
-           bp-=3;\r
-       }\r
+        this._ref_buf=(byte[])i_buffer.getData();\r
     }    \r
-    public int getWidth()\r
-    {\r
-        return width;\r
-    }\r
-    public int getHeight()\r
-    {\r
-        return height;\r
-    }\r
-    public void getPixel(int i_x,int i_y,int[] i_rgb)\r
-    {\r
-        int bp=(i_x+i_y*this.width)*3;\r
-        byte[] ref=this.ref_buf;\r
-        i_rgb[0]=(ref[bp+this.red_idx] & 0xff);//R\r
-        i_rgb[1]=(ref[bp+this.green_idx] & 0xff);//G\r
-        i_rgb[2]=(ref[bp+this.blue_idx] & 0xff);//B\r
-    }\r
     /**\r
      * ピクセルの順序タイプを返します。\r
      * @return\r
@@ -116,7 +121,7 @@ public class JmfNyARRaster_RGB implements INyARRaster
      */\r
     public int getPixelOrder()\r
     {\r
-       return pix_type;\r
+       return this._pix_type;\r
     }\r
     /**\r
      * データを持っているかを返します。\r
@@ -124,22 +129,6 @@ public class JmfNyARRaster_RGB implements INyARRaster
      */\r
     public boolean hasData()\r
     {\r
-       return ref_buf!=null;\r
-    }\r
-    public void getPixelSet(int[] i_x,int i_y[],int i_num,int[] o_rgb)\r
-    {\r
-       int ri=this.red_idx;\r
-       int bi=this.green_idx;\r
-       int gi=this.blue_idx;\r
-       int width=this.width;\r
-       byte[] ref=this.ref_buf;\r
-       int bp;\r
-       for(int i=i_num-1;i>=0;i--){\r
-           bp=(i_x[i]+i_y[i]*width)*3;\r
-           o_rgb[i*3+0]=(ref[bp+ri] & 0xff);//R\r
-           o_rgb[i*3+1]=(ref[bp+gi] & 0xff);//G\r
-           o_rgb[i*3+2]=(ref[bp+bi] & 0xff);//B\r
-       }       \r
-       return;\r
-    }\r
+       return this._ref_buf!=null;\r
+    }    \r
 }\r
index 7425cb8..b79de09 100644 (file)
@@ -9,7 +9,7 @@ package jp.nyatla.nyartoolkit.jogl.utils;
 import jp.nyatla.nyartoolkit.NyARException;\r
 import jp.nyatla.nyartoolkit.core.NyARCode;\r
 import jp.nyatla.nyartoolkit.core.NyARParam;\r
-import jp.nyatla.nyartoolkit.core.NyARTransMatResult;\r
+import jp.nyatla.nyartoolkit.core.transmat.NyARTransMatResult;\r
 import jp.nyatla.nyartoolkit.detector.*;\r
 \r
 public class GLNyARDetectMarker extends NyARDetectMarker\r
index f7e585a..280964e 100644 (file)
@@ -15,14 +15,14 @@ import jp.nyatla.nyartoolkit.core.*;
 \r
 public class GLNyARRaster_RGB extends JmfNyARRaster_RGB\r
 {\r
-    private byte[] gl_buf;\r
-    private int gl_flag;\r
+    private byte[] _gl_buf;\r
+    private int _gl_flag;\r
 \r
     public GLNyARRaster_RGB(GL i_ref_gl,NyARParam i_param)\r
     {\r
        super(i_param.getX(),i_param.getY());\r
-       this.gl_flag=GL.GL_RGB;\r
-       this.gl_buf=new byte[this.width*this.height*3];\r
+       this._gl_flag=GL.GL_RGB;\r
+       this._gl_buf=new byte[this._size.w*this._size.h*3];\r
     }\r
     public void setBuffer(javax.media.Buffer i_buffer,boolean i_is_reverse) throws NyARException\r
     {\r
@@ -32,30 +32,30 @@ public class GLNyARRaster_RGB extends JmfNyARRaster_RGB
        byte[] src_buf=(byte[])i_buffer.getData();\r
        //GL用のデータを準備\r
        if(i_is_reverse){\r
-           int length=this.width*3;\r
+           int length=this._size.w*3;\r
            int src_idx=0;\r
-           int dest_idx=(this.height-1)*length;\r
-           for(int i=0;i<this.height;i++){\r
-               System.arraycopy(src_buf,src_idx,this.gl_buf,dest_idx,length);\r
+           int dest_idx=(this._size.h-1)*length;\r
+           for(int i=0;i<this._size.h;i++){\r
+               System.arraycopy(src_buf,src_idx,this._gl_buf,dest_idx,length);\r
                src_idx+=length;\r
                dest_idx-=length;\r
            }\r
        }else{\r
-           System.arraycopy(src_buf,0,gl_buf,0,src_buf.length);\r
+           System.arraycopy(src_buf,0,this._gl_buf,0,src_buf.length);\r
        }\r
        //GLのフラグ設定\r
-       switch(this.pix_type){\r
+       switch(this._pix_type){\r
        case GLNyARRaster_RGB.PIXEL_ORDER_BGR:\r
-           this.gl_flag=GL.GL_BGR;\r
+           this._gl_flag=GL.GL_BGR;\r
             break;\r
        case GLNyARRaster_RGB.PIXEL_ORDER_RGB:\r
-           this.gl_flag=GL.GL_RGB;\r
+           this._gl_flag=GL.GL_RGB;\r
             break;\r
         default:\r
             throw new NyARException();\r
        }\r
        //ref_bufをgl_bufに差し替える\r
-       ref_buf=gl_buf;\r
+       this._ref_buf=this._gl_buf;\r
     }\r
     /**\r
      * GLでそのまま描画できるRGBバッファを返す。\r
@@ -63,7 +63,7 @@ public class GLNyARRaster_RGB extends JmfNyARRaster_RGB
      */\r
     public byte[] getGLRgbArray()\r
     {\r
-       return this.ref_buf;\r
+       return this._ref_buf;\r
     }\r
     /**\r
      * GL用のRGBバッファのバイト並びタイプを返す。\r
@@ -71,6 +71,6 @@ public class GLNyARRaster_RGB extends JmfNyARRaster_RGB
      */\r
     public int getGLPixelFlag()\r
     {\r
-       return this.gl_flag;\r
+       return this._gl_flag;\r
     }\r
 }\r
index 3fa5266..c862b57 100644 (file)
@@ -9,7 +9,7 @@ package jp.nyatla.nyartoolkit.jogl.utils;
 import jp.nyatla.nyartoolkit.NyARException;\r
 import jp.nyatla.nyartoolkit.core.NyARCode;\r
 import jp.nyatla.nyartoolkit.core.NyARParam;\r
-import jp.nyatla.nyartoolkit.core.NyARTransMatResult;\r
+import jp.nyatla.nyartoolkit.core.transmat.NyARTransMatResult;\r
 import jp.nyatla.nyartoolkit.detector.*;\r
 \r
 public class GLNyARSingleDetectMarker extends NyARSingleDetectMarker\r
index 33587fa..963f759 100644 (file)
@@ -13,6 +13,7 @@ import jp.nyatla.nyartoolkit.qt.utils.*;
 import java.awt.*;
 
 import jp.nyatla.nyartoolkit.core.*;
+import jp.nyatla.nyartoolkit.core.transmat.NyARTransMatResult;
 import jp.nyatla.nyartoolkit.detector.*;
 
 
index 023d8ab..e735e29 100644 (file)
@@ -13,10 +13,10 @@ import java.awt.image.DataBuffer;
 import java.awt.image.WritableRaster;\r
 \r
 import jp.nyatla.nyartoolkit.NyARException;\r
-import jp.nyatla.nyartoolkit.core.raster.INyARRaster;\r
+import jp.nyatla.nyartoolkit.core.raster.NyARRaster;\r
 \r
 \r
-public class QtNyARRaster_RGB implements INyARRaster\r
+public class QtNyARRaster_RGB implements NyARRaster\r
 {\r
     protected byte[] ref_buf;\r
     protected int width=0;\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/base/Config.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/base/Config.java
deleted file mode 100644 (file)
index add7b1b..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-package jp.nyatla.nyartoolkit.base;\r
-\r
-public class Config {\r
-       //Version系情報\r
-//     public static final int AR_HEADER_VERSION_MAJOR=2; //#define AR_HEADER_VERSION_MAJOR            2\r
-//     public static final int AR_HEADER_VERSION_MINOR=72;//#define AR_HEADER_VERSION_MINOR            72\r
-//\r
-//     public static final int AR_HEADER_VERSION_TINY=0;//#define AR_HEADER_VERSION_TINY               0\r
-//\r
-//     public static final int AR_HEADER_VERSION_BUILD=0;//#define AR_HEADER_VERSION_BUILD             0\r
-//     \r
-//     public static final String AR_HEADER_VERSION_STRING="2.72.0";//#define AR_HEADER_VERSION_STRING "2.72.0"\r
-//\r
-//     public static final boolean AR_HAVE_HEADER_VERSION_2=true;//#define AR_HAVE_HEADER_VERSION_2\r
-//     public static final boolean AR_HAVE_HEADER_VERSION_2_72=true;//#define AR_HAVE_HEADER_VERSION_2_72\r
-\r
-\r
-       /*ビデオ入力系?*/\r
-       /*------------------------------------------------------------*/\r
-\r
-//     public static final int AR_DRAW_BY_GL_DRAW_PIXELS =0;//#define  AR_DRAW_BY_GL_DRAW_PIXELS    0\r
-//     public static final int AR_DRAW_BY_TEXTURE_MAPPING=1;//#define  AR_DRAW_BY_TEXTURE_MAPPING   1\r
-//     public static final int AR_DRAW_TEXTURE_FULL_IMAGE=0;//#define  AR_DRAW_TEXTURE_FULL_IMAGE   0\r
-//     public static final int AR_DRAW_TEXTURE_HALF_IMAGE=1;//#define  AR_DRAW_TEXTURE_HALF_IMAGE   1\r
-//     public static final int AR_IMAGE_PROC_IN_FULL=0;//#define  AR_IMAGE_PROC_IN_FULL        0\r
-//     public static final int AR_IMAGE_PROC_IN_HALF=1;//#define  AR_IMAGE_PROC_IN_HALF        1\r
-//     public static final int AR_FITTING_TO_IDEAL=0;//#define  AR_FITTING_TO_IDEAL          0\r
-//     public static final int AR_FITTING_TO_INPUT=1;//#define  AR_FITTING_TO_INPUT          1\r
-\r
-//     public static final int AR_TEMPLATE_MATCHING_COLOR=0;//#define  AR_TEMPLATE_MATCHING_COLOR   0\r
-//     public static final int AR_TEMPLATE_MATCHING_BW=1;//#define  AR_TEMPLATE_MATCHING_BW      1\r
-//     public static final int AR_MATCHING_WITHOUT_PCA=0;//#define  AR_MATCHING_WITHOUT_PCA      0\r
-//     public static final int AR_MATCHING_WITH_PCA=1;//#define  AR_MATCHING_WITH_PCA         1\r
-       \r
-//     public static final int DEFAULT_TEMPLATE_MATCHING_MODE=AR_TEMPLATE_MATCHING_BW;//#define  DEFAULT_TEMPLATE_MATCHING_MODE     AR_TEMPLATE_MATCHING_COLOR\r
-//     public static final int DEFAULT_MATCHING_PCA_MODE=AR_MATCHING_WITH_PCA;//#define  DEFAULT_MATCHING_PCA_MODE          AR_MATCHING_WITHOUT_PCA\r
-\r
-\r
-       //#ifdef _WIN32\r
-//     public static final int DEFAULT_IMAGE_PROC_MODE         =AR_IMAGE_PROC_IN_FULL;//#  define   DEFAULT_IMAGE_PROC_MODE     AR_IMAGE_PROC_IN_FULL\r
-//     public static final int DEFAULT_FITTING_MODE                    =AR_FITTING_TO_INPUT;//#  define   DEFAULT_FITTING_MODE        AR_FITTING_TO_INPUT\r
-//     public static final int DEFAULT_DRAW_MODE                               =AR_DRAW_BY_TEXTURE_MAPPING;//#  define   DEFAULT_DRAW_MODE           AR_DRAW_BY_TEXTURE_MAPPING\r
-//     public static final int DEFAULT_DRAW_TEXTURE_IMAGE      =AR_DRAW_TEXTURE_FULL_IMAGE;//#  define   DEFAULT_DRAW_TEXTURE_IMAGE  AR_DRAW_TEXTURE_FULL_IMAGE\r
-       //#endif\r
-\r
-//     public static final int AR_PIX_SIZE_DEFAULT=\r
-//             (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ABGR) || (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGRA) || (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGBA) || (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_ARGB)?4:\r
-//             ((AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_BGR) || (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_RGB)?3:\r
-//             ((AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_2vuy) || (AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_yuvs)?2:\r
-//             ((AR_DEFAULT_PIXEL_FORMAT == AR_PIXEL_FORMAT_MONO)?1:-1)));\r
-//     public static final int AR_GET_TRANS_MAT_MAX_LOOP_COUNT=5;//#define   AR_GET_TRANS_MAT_MAX_LOOP_COUNT         5\r
-//     public static final double AR_GET_TRANS_MAT_MAX_FIT_ERROR=1.0;//#define   AR_GET_TRANS_MAT_MAX_FIT_ERROR          1.0\r
-//     public static final double AR_GET_TRANS_CONT_MAT_MAX_FIT_ERROR=1.0;//#define   AR_GET_TRANS_CONT_MAT_MAX_FIT_ERROR     1.0\r
-\r
-//     public static final int AR_AREA_MAX=100000;//#define   AR_AREA_MAX      100000\r
-//     public static final int AR_AREA_MIN=70;//#define   AR_AREA_MIN          70\r
-\r
-\r
-//     public static final int AR_SQUARE_MAX=30;//#define   AR_SQUARE_MAX        30\r
-//     public static final int AR_CHAIN_MAX=10000;//#define   AR_CHAIN_MAX      10000\r
-//     public static final int AR_PATT_NUM_MAX=50;//#define   AR_PATT_NUM_MAX      50 \r
-//     public static final int AR_PATT_SIZE_X=16;//#define   AR_PATT_SIZE_X       16 \r
-//     public static final int AR_PATT_SIZE_Y=16;//#define   AR_PATT_SIZE_Y       16 \r
-//     public static final int AR_PATT_SAMPLE_NUM=64;//#define   AR_PATT_SAMPLE_NUM   64\r
-\r
-//     public static final double AR_GL_CLIP_NEAR=50.0;//#define   AR_GL_CLIP_NEAR      50.0\r
-//     public static final double AR_GL_CLIP_FAR=5000.0;//#define   AR_GL_CLIP_FAR     5000.0\r
-\r
-//     public static final int AR_HMD_XSIZE=640;//#define   AR_HMD_XSIZE        640\r
-//     public static final int AR_HMD_YSIZE=480;//#define   AR_HMD_YSIZE        480\r
-\r
-//     public static final int AR_PARAM_NMIN=6;//#define   AR_PARAM_NMIN         6\r
-//     public static final int AR_PARAM_NMAX=1000;//#define   AR_PARAM_NMAX      1000\r
-//     public static final double AR_PARAM_C34=100.0;//#define   AR_PARAM_C34        100.0\r
-}\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/base/Param.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/base/Param.java
deleted file mode 100644 (file)
index 270589d..0000000
+++ /dev/null
@@ -1,366 +0,0 @@
-package jp.nyatla.nyartoolkit.base;\r
-\r
-import jp.nyatla.nyartoolkit.NyARException;\r
-import jp.nyatla.nyartoolkit.core.NyARMat;\r
-\r
-\r
-\r
-\r
-public class Param {\r
-    private static final int AR_PARAM_NMIN=6;//#define   AR_PARAM_NMIN         6\r
-    private static final int AR_PARAM_NMAX=1000;//#define   AR_PARAM_NMAX      1000\r
-    private static final double AR_PARAM_C34=100.0;//#define   AR_PARAM_C34        100.0\r
-\r
-    /*\r
-       typedef struct {\r
-           int      xsize, ysize;\r
-           double   matL[3][4];\r
-           double   matR[3][4];\r
-           double   matL2R[3][4];\r
-           double   dist_factorL[4];\r
-           double   dist_factorR[4];\r
-       } ARSParam;*/\r
-/*     static class ARSParam{\r
-           int      xsize, ysize;\r
-           Double2dArray   matL=new Double2dArray(3,4);\r
-           Double2dArray   matR=new Double2dArray(3,4);\r
-           Double2dArray   matL2R=new Double2dArray(3,4);\r
-           double[]   dist_factorL=new double[4];\r
-           double[]   dist_factorR=new double[4];\r
-       }*/\r
-       private static final int arParamGet_AR_PARAM_CDMIN = 12;\r
-       /*int  arParamGet( double global[][3], double screen[][2], int data_num,double mat[3][4] );*/\r
-       public static int arParamGet( double global[][], double[][] screen, int num,double[][] mat) throws NyARException\r
-       {\r
-               NyARMat     mat_a, mat_at, mat_r;//ARMat     *mat_a, *mat_at, *mat_r, mat_cpara;\r
-               NyARMat     mat_wm1,mat_wm2;//ARMat     *mat_wm1, *mat_wm2;\r
-               int i;\r
-               \r
-               if(num < AR_PARAM_NMIN){\r
-                       return( -1 );\r
-               }\r
-               if(num > AR_PARAM_NMAX){\r
-                       return( -1 );\r
-               }\r
-               NyARException.trap("未チェックのパス");{\r
-               mat_a = new NyARMat(2*num,arParamGet_AR_PARAM_CDMIN-1 );//mat_a = arMatrixAlloc( 2*num, AR_PARAM_CDMIN-1 );\r
-               mat_at =new NyARMat(arParamGet_AR_PARAM_CDMIN-1, 2*num );//mat_at = arMatrixAlloc( AR_PARAM_CDMIN-1, 2*num );\r
-               mat_r = new NyARMat(2*num,1);//mat_r = arMatrixAlloc( 2*num, 1 );\r
-               mat_wm1 =new NyARMat(arParamGet_AR_PARAM_CDMIN-1, arParamGet_AR_PARAM_CDMIN-1 );//mat_wm1 = arMatrixAlloc( AR_PARAM_CDMIN-1, AR_PARAM_CDMIN-1 );\r
-               mat_wm2 =new NyARMat(arParamGet_AR_PARAM_CDMIN-1, 2*num );//mat_wm2 = arMatrixAlloc( AR_PARAM_CDMIN-1, 2*num );\r
-               }\r
-/*\r
-               mat_a = Matrix.arMatrixAlloc( 2*num, arParamGet_AR_PARAM_CDMIN-1 );//mat_a = arMatrixAlloc( 2*num, AR_PARAM_CDMIN-1 );\r
-               if( mat_a == null){\r
-                  return -1;\r
-               }\r
-               mat_at =Matrix.arMatrixAlloc(arParamGet_AR_PARAM_CDMIN-1, 2*num );//mat_at = arMatrixAlloc( AR_PARAM_CDMIN-1, 2*num );\r
-               if(mat_at == null){\r
-                  return -1;\r
-               }\r
-               mat_r = Matrix.arMatrixAlloc( 2*num, 1 );//mat_r = arMatrixAlloc( 2*num, 1 );\r
-               if(mat_r ==null){\r
-                  return -1;\r
-               }\r
-               mat_wm1 = Matrix.arMatrixAlloc(arParamGet_AR_PARAM_CDMIN-1, arParamGet_AR_PARAM_CDMIN-1 );//mat_wm1 = arMatrixAlloc( AR_PARAM_CDMIN-1, AR_PARAM_CDMIN-1 );\r
-               if( mat_wm1 == null) {\r
-                  return -1;\r
-               }\r
-               mat_wm2 = Matrix.arMatrixAlloc(arParamGet_AR_PARAM_CDMIN-1, 2*num );//mat_wm2 = arMatrixAlloc( AR_PARAM_CDMIN-1, 2*num );\r
-               if( mat_wm2 == null ) {\r
-                       return -1;\r
-               }\r
-*/\r
-               /* Initializing array */\r
-               mat_a.zeroClear();//Javaではゼロクリアされるので不要\r
-//             pa1=mat_a.getPointer();//pa1 = mat_a->m;\r
-//             for(i = 0; i < 2 * num * (arParamGet_AR_PARAM_CDMIN-1); i++){\r
-//                     {//*pa1++ = 0.0;\r
-//                     pa1.set(0.0);\r
-//                     pa1.incPtr();}\r
-//             }\r
-               double[][] pa1  =mat_a.getArray();\r
-               double[][] pa2 =mat_a.getArray();\r
-               /* Calculate A,R matrix */\r
-               double[][] pr=mat_r.getArray();\r
-               int pr_ptr_col=0;\r
-               for(i = 0; i < num; i++) {//for(i = 0, pr = mat_r->m; i < num; i++) {\r
-                   int pa1_ptr_row     =2*i;  //pa1 = &(mat_a->m[ (2*i)   * (AR_PARAM_CDMIN-1)\r
-                   int pa2_ptr_row     =2*i+1;//pa2 = &(mat_a->m[ (2*i+1) * (AR_PARAM_CDMIN-1) + 4]);\r
-\r
-\r
-//                 pa1=mat_a.getPointer((2*i)*(arParamGet_AR_PARAM_CDMIN-1));    ]);\r
-//                 pa2=mat_a.getPointer((2*i+1)*(arParamGet_AR_PARAM_CDMIN-1) + 4);\r
-                   //*pa1++ = global[i][0]; *pa1++ = global[i][1];\r
-                   pa1[pa1_ptr_row][ 0]=global[i][0];\r
-                   pa1[pa1_ptr_row][ 1]=global[i][1];\r
-                   //*pa1++ = global[i][2]; *pa1++  = 1.0;\r
-                   pa1[pa1_ptr_row][ 2]=global[i][2];\r
-                   pa1[pa1_ptr_row][ 3]=1.0;\r
-                   //*pa2++ = global[i][0]; *pa2++ = global[i][1];\r
-                   pa2[pa2_ptr_row][ 4]=global[i][0];\r
-                   pa2[pa2_ptr_row][ 5]=global[i][1];\r
-                   //*pa2++ = global[i][2]; *pa2++ = 1.0;\r
-                   pa2[pa2_ptr_row][ 6]=global[i][2];\r
-                   pa2[pa2_ptr_row][ 7]=1.0;\r
-                   //pa1 += 4;\r
-                   //*pa1++ = -global[i][0] * screen[i][0];\r
-                   pa1[pa1_ptr_row][ 8]=-global[i][0] * screen[i][0];\r
-                   //*pa1++ = -global[i][1] * screen[i][0];\r
-                   pa1[pa1_ptr_row][ 9]=-global[i][1] * screen[i][0];\r
-                   //*pa1   = -global[i][2] * screen[i][0];\r
-                   pa1[pa1_ptr_row][10]=-global[i][2]* screen[i][0];\r
-                   //*pa2++ = -global[i][0] * screen[i][1];\r
-                   pa2[pa2_ptr_row][ 8]=-global[i][0] * screen[i][1];\r
-                   //*pa2++ = -global[i][1] * screen[i][1];\r
-                   pa2[pa2_ptr_row][ 9]=-global[i][1] * screen[i][1];\r
-                   //*pa2   = -global[i][2] * screen[i][1];\r
-                   pa2[pa2_ptr_row][10]=-global[i][2] * screen[i][1];\r
-                   //*pr++  = screen[i][0] * AR_PARAM_C34;\r
-                   pr[0][pr_ptr_col]=screen[i][0] * AR_PARAM_C34;pr_ptr_col++;\r
-                   //*pr++  = screen[i][1] * AR_PARAM_C34;\r
-                   pr[0][pr_ptr_col]=screen[i][1] * AR_PARAM_C34;pr_ptr_col++;\r
-               }\r
-\r
-               NyARException.trap("未チェックのパス");\r
-               NyARMat.matrixTrans(mat_at, mat_a );//if( arMatrixTrans( mat_at, mat_a ) < 0 ){\r
-\r
-               NyARException.trap("未チェックのパス");\r
-               mat_wm1.matrixMul(mat_at, mat_a );//if( arMatrixMul( mat_wm1, mat_at, mat_a ) < 0 ) {\r
-               NyARException.trap("未チェックのパス");\r
-               mat_wm1.matrixSelfInv();//if( arMatrixSelfInv( mat_wm1 ) < 0 ) {\r
-\r
-               NyARException.trap("未チェックのパス");\r
-               mat_wm2.matrixMul(mat_wm1, mat_at );//if( arMatrixMul( mat_wm2, mat_wm1, mat_at ) < 0 ) {\r
-\r
-               //mat_cpara.row = AR_PARAM_CDMIN-1;//mat_cpara.row = AR_PARAM_CDMIN-1;\r
-               //mat_cpara.clm = 1;\r
-               //mat_cpara.m = &(mat[0][0]);\r
-               /*1次元行列から3x4行列に転写。高負荷なところじゃないから地道に転写でOK*/\r
-               NyARMat mat_cpara=new NyARMat(arParamGet_AR_PARAM_CDMIN-1,1);\r
-               double[][] mat_cpara_array=mat_cpara.getArray();\r
-               NyARException.trap("未チェックのパス");\r
-               mat_cpara.matrixMul(mat_wm2, mat_r );//if( arMatrixMul( &mat_cpara, mat_wm2, mat_r ) < 0 ) {\r
-\r
-               for(int i2=0;i<3;i++){\r
-                   for(int i3=0;i3<4;i3++){\r
-                       mat[i2][i3]=mat_cpara_array[i2*4+i3][0];\r
-                   }\r
-               }\r
-               //ARMat.wrap(mat.array(),arParamGet_AR_PARAM_CDMIN-1,1);}\r
-\r
-               mat[2][3]=AR_PARAM_C34;//mat[2][3] = AR_PARAM_C34;\r
-\r
-               return 0;\r
-       }\r
-\r
-/*     //int    arsParamChangeSize( ARSParam *source, int xsize, int ysize, ARSParam *newparam );\r
-       public static int arsParamChangeSize( ARSParam source, int xsize, int ysize, ARSParam newparam)\r
-       {\r
-           double  scale;\r
-\r
-           newparam.xsize=xsize;//newparam->xsize = xsize;\r
-           newparam.ysize=ysize;//newparam->ysize = ysize;\r
-\r
-           scale=(double)xsize/ (double)(source.xsize);//scale = (double)xsize / (double)(source->xsize);\r
-           for(int i = 0; i < 4; i++ ){\r
-               newparam.matL.set(0,i,source.matL.get(0,i)*scale);//newparam->matL[0][i] = source->matL[0][i] * scale;\r
-               newparam.matL.set(1,i,source.matL.get(1,i)*scale);//newparam->matL[1][i] = source->matL[1][i] * scale;\r
-               newparam.matL.set(2,i,source.matL.get(2,i));//newparam->matL[2][i] = source->matL[2][i];\r
-           }\r
-           for(int i = 0; i < 4; i++ ) {\r
-               newparam.matR.set(0,i,source.matR.get(0,i)*scale);//newparam->matR[0][i] = source->matR[0][i] * scale;\r
-               newparam.matR.set(1,i,source.matR.get(1,i)*scale);//newparam->matR[1][i] = source->matR[1][i] * scale;\r
-               newparam.matR.set(2,i,source.matR.get(2,i));//newparam->matR[2][i] = source->matR[2][i];\r
-           }\r
-           for(int i = 0; i < 4; i++ ) {\r
-               newparam.matL2R.set(0,i,source.matL2R.get(0,i));//newparam->matL2R[0][i] = source->matL2R[0][i];\r
-               newparam.matL2R.set(1,i,source.matL2R.get(1,i));//newparam->matL2R[1][i] = source->matL2R[1][i];\r
-               newparam.matL2R.set(2,i,source.matL2R.get(2,i));//newparam->matL2R[2][i] = source->matL2R[2][i];\r
-           }\r
-\r
-           newparam.dist_factorL[0] = source.dist_factorL[0] * scale;//newparam->dist_factorL[0] = source->dist_factorL[0] * scale;\r
-           newparam.dist_factorL[1] = source.dist_factorL[1] * scale;//newparam->dist_factorL[1] = source->dist_factorL[1] * scale;\r
-           newparam.dist_factorL[2] = source.dist_factorL[2] / (scale*scale);//newparam->dist_factorL[2] = source->dist_factorL[2] / (scale*scale);\r
-           newparam.dist_factorL[3] = source.dist_factorL[3];//newparam->dist_factorL[3] = source->dist_factorL[3];\r
-\r
-           newparam.dist_factorR[0] = source.dist_factorR[0] * scale;//newparam->dist_factorR[0] = source->dist_factorR[0] * scale;\r
-           newparam.dist_factorR[1] = source.dist_factorR[1] * scale;//newparam->dist_factorR[1] = source->dist_factorR[1] * scale;\r
-           newparam.dist_factorR[2] = source.dist_factorR[2] / (scale*scale);//newparam->dist_factorR[2] = source->dist_factorR[2] / (scale*scale);\r
-           newparam.dist_factorR[3] = source.dist_factorR[3];//newparam->dist_factorR[3] = source->dist_factorR[3];\r
-\r
-           return 0;\r
-       }*/\r
-/*     //int arsParamSave( char *filename, ARSParam *sparam );\r
-       public static int arsParamSave(String filename, ARSParam sparam) throws Exception\r
-       {   \r
-           //int      xsize, ysize;\r
-           //Double2dArray   matL=new Double2dArray(3,4);\r
-           //Double2dArray   matR=new Double2dArray(3,4);\r
-           //Double2dArray   matL2R=new Double2dArray(3,4);\r
-           //double   dist_factorL[]=new double[4];\r
-           //double   dist_factorR[]=new double[4];\r
-\r
-               byte[] buf=new byte[(4+4+(3*4*8)*3+(4*8)*2)];\r
-               \r
-               //バッファをラップ\r
-               ByteBuffer bb = ByteBuffer.wrap(buf);\r
-               bb.order(ByteOrder.BIG_ENDIAN);\r
-\r
-               //書き込み\r
-               bb.putInt(sparam.xsize);\r
-               bb.putInt(sparam.ysize);\r
-               for(int i=0;i<3;i++){\r
-                       for(int i2=0;i2<4;i2++){\r
-                               bb.putDouble(sparam.matL.get(i, i2));\r
-                       }\r
-               }\r
-               for(int i=0;i<3;i++){\r
-                       for(int i2=0;i2<4;i2++){\r
-                               bb.putDouble(sparam.matR.get(i, i2));\r
-                       }\r
-               }\r
-               for(int i=0;i<3;i++){\r
-                       for(int i2=0;i2<4;i2++){\r
-                               bb.putDouble(sparam.matL2R.get(i, i2));\r
-                       }\r
-               }\r
-               for(int i=0;i<4;i++){\r
-                       bb.putDouble(sparam.dist_factorL[i]);\r
-               }\r
-               for(int i=0;i<4;i++){\r
-                       bb.putDouble(sparam.dist_factorR[i]);\r
-               }\r
-               //ファイルに保存\r
-               FileOutputStream fs=new FileOutputStream(filename);\r
-               fs.write(buf);\r
-               fs.close();\r
-               \r
-               return 0;\r
-       }*/\r
-/*     //int    arsParamLoad( char *filename, ARSParam *sparam );\r
-       public static int arsParamLoad(String filename, ARSParam sparam ) throws Exception\r
-       {\r
-               //ファイルを読んどく\r
-               FileInputStream fs=new FileInputStream(filename);\r
-               File f=new File(filename);\r
-               int file_size=(int)f.length();\r
-               byte[] buf=new byte[file_size];\r
-               fs.read(buf);\r
-               fs.close();\r
-               \r
-               //バッファを加工\r
-               ByteBuffer bb = ByteBuffer.wrap(buf);\r
-               bb.order(ByteOrder.BIG_ENDIAN);\r
-               \r
-               //固定回数パースして配列に格納            \r
-               sparam.xsize=bb.getInt();\r
-               sparam.ysize=bb.getInt();\r
-               for(int i=0;i<3;i++){\r
-                       for(int i2=0;i2<4;i2++){\r
-                               sparam.matL.set(i,i2,bb.getDouble());\r
-                       }\r
-               }\r
-               for(int i=0;i<3;i++){\r
-                       for(int i2=0;i2<4;i2++){\r
-                               sparam.matR.set(i,i2,bb.getDouble());\r
-                       }\r
-               }\r
-               for(int i=0;i<3;i++){\r
-                       for(int i2=0;i2<4;i2++){\r
-                               sparam.matL2R.set(i,i2,bb.getDouble());\r
-                       }\r
-               }\r
-               for(int i=0;i<3;i++){\r
-                       sparam.dist_factorL[i]=bb.getDouble();\r
-               }\r
-               for(int i=0;i<3;i++){\r
-                       sparam.dist_factorR[i]=bb.getDouble();\r
-               }\r
-               return 0;\r
-       }*/\r
-/*\r
-       //      int    arsParamGetMat( double matL[3][4], double matR[3][4],double cparaL[3][4], double cparaR[3][4], double matL2R[3][4] );\r
-       public static int arsParamGetMat(double[][] matL, double[][] matR,double[][] cparaL, double[][] cparaR, double[][] matL2R) throws JartkException\r
-       {\r
-           ARMat t1,t2,t3;//ARMat    *t1, *t2, *t3;\r
-           //double   transL[3][4], transR[3][4];\r
-           Double2dArray transL=new Double2dArray(3,4);\r
-           Double2dArray transR=new Double2dArray(3,4);\r
-       \r
-           arParamDecompMat( matL,cparaL,transL);\r
-           arParamDecompMat( matR,cparaR,transR);\r
-           JartkException.trap("未チェックパス");{\r
-           t1=new ARMat(4,4);//t1 = arMatrixAlloc( 4, 4 );\r
-           t2=new ARMat(4,4);//t2 = arMatrixAlloc( 4, 4 );\r
-           }\r
-           double[][] t1_array=t1.getArray();\r
-           double[][] t2_array=t2.getArray();\r
-           for(int j = 0; j < 3; j++ ){\r
-               for(int i = 0; i < 4; i++ ) {\r
-                   JartkException.trap("未チェックパス");{\r
-                   t1_array[j][i]=transL.get(j,i);//t1->m[j*4+i] = transL[j][i];\r
-                   t2_array[j][i]=transL.get(j,i);//t2->m[j*4+i] = transR[j][i];\r
-                   }\r
-               }\r
-           }\r
-           JartkException.trap("未チェックパス");{\r
-           t1_array[3][0]=t1_array[3][1]=t1_array[3][2]=0.0;//t1->m[12] = t1->m[13] = t1->m[14] = 0.0;\r
-           t1_array[3][3]=1.0;//t1->m[15] = 1.0;\r
-           t2_array[3][0]=t2_array[3][1]=t2_array[3][2]=0.0;//t2->m[12] = t2->m[13] = t2->m[14] = 0.0;\r
-           t2_array[3][3]=1.0;//t2->m[15] = 1.0;\r
-           }\r
-           JartkException.trap("未チェックのパス");\r
-           t1.matrixSelfInv();//if( arMatrixSelfInv(t1) != 0 ) {\r
-\r
-           JartkException.trap("未チェックのパス");        \r
-           t3 =ARMat.matrixAllocMul(t2, t1);//t3 = arMatrixAllocMul(t2, t1);\r
-           double[][] t3_array=t3.getArray();\r
-           if(t3==null){\r
-               return -1;\r
-           }\r
-       \r
-           for(int j = 0; j < 3; j++ ) {\r
-              for(int i = 0; i < 4; i++ ) {\r
-                  JartkException.trap("未チェックパス");\r
-                  matL2R[j][i]=t3_array[j][i];//matL2R[j][i] = t3->m[j*4+i];\r
-               }\r
-           }\r
-           return 0;\r
-       }\r
-*/     //int arsParamDisp( ARSParam *sparam )\r
-/*     public static int arsParamDisp( ARSParam sparam)\r
-       {\r
-               System.out.println("--------------------------------------");//printf("--------------------------------------\n");\r
-               System.out.println("SIZE = "+sparam.xsize+", "+sparam.ysize);// printf("SIZE = %d, %d\n", sparam->xsize, sparam->ysize);\r
-               System.out.println("-- Left --");//printf("-- Left --\n");\r
-               System.out.println("Distotion factor = "+sparam.dist_factorL[0]+" "+sparam.dist_factorL[1]+" "+sparam.dist_factorL[2]+" "+sparam.dist_factorL[3]);//printf("Distotion factor = %f %f %f %f\n", sparam->dist_factorL[0],sparam->dist_factorL[1], sparam->dist_factorL[2], sparam->dist_factorL[3] );\r
-           for(int j = 0; j < 3; j++ ) {\r
-               for(int i = 0; i < 4; i++ ){\r
-                       System.out.print(sparam.matL.get(j,i)+" ");//printf("%7.5f ", sparam->matL[j][i]);\r
-               }\r
-               System.out.println();//printf("\n");\r
-           }\r
-       \r
-           System.out.println("-- Right --");//printf("-- Right --\n");\r
-           System.out.println("Distotion factor = "+sparam.dist_factorR[0]+" "+sparam.dist_factorR[1]+" "+sparam.dist_factorR[2]+" "+sparam.dist_factorR[3]);//printf("Distotion factor = %f %f %f %f\n", sparam->dist_factorR[0],sparam->dist_factorR[1], sparam->dist_factorR[2], sparam->dist_factorR[3]);\r
-           for(int j = 0; j < 3; j++ ){\r
-               for(int i = 0; i < 4; i++ ){\r
-                       System.out.println(sparam.matR.get(j,i)+" ");//printf("%7.5f ", sparam->matR[j][i]);\r
-               }\r
-               System.out.println();//printf("\n");\r
-           }\r
-       \r
-           System.out.println("-- Left => Right --");//printf("-- Left => Right --\n");\r
-           for(int j = 0; j < 3; j++ ) {\r
-               for(int i = 0; i < 4; i++ ){\r
-                       //printf("%7.5f ", sparam->matL2R[j][i]);\r
-               }\r
-               System.out.println();//printf("\n");\r
-           }\r
-       \r
-           System.out.println("--------------------------------------");//printf("--------------------------------------\n");\r
-       \r
-           return 0;           \r
-       }*/\r
-}\r
index 37e6f7c..0796044 100644 (file)
@@ -89,7 +89,7 @@ public class NyARDetectMarker {
      * @param clip\r
      * @throws NyARException\r
      */\r
-    private final void arGetContour(NyARMarker o_marker,int[][] limage,int i_labelnum, NyLabelingLabel i_label) throws NyARException\r
+    private final void arGetContour(NyARMarker o_marker,int[][] limage,int i_labelnum, NyARLabelingLabel i_label) throws NyARException\r
     {\r
        final int[] xcoord=wk_arGetContour_xcoord;\r
        final int[] ycoord=wk_arGetContour_ycoord;\r
@@ -204,12 +204,12 @@ public class NyARDetectMarker {
      * 抽出したマーカーを格納するリスト\r
      * @throws NyARException\r
      */\r
-    public final void detectMarker(NyLabelingImage i_labeling,double i_factor,NyARMarkerList o_marker_list) throws NyARException\r
+    public final void detectMarker(NyARLabelingImage i_labeling,double i_factor,NyARMarkerList o_marker_list) throws NyARException\r
     {\r
        int label_area;\r
        int i;\r
        int xsize, ysize;\r
-       NyLabelingLabel[] labels=i_labeling.getLabelList().getArray();\r
+       NyARLabelingLabel[] labels=i_labeling.getLabelList().getArray();\r
 //     int[] warea     =i_labeling.getArea();\r
        int label_num   =i_labeling.getLabelList().getCount();\r
 //     int[][] wclip   =i_labeling.getClip();\r
@@ -223,7 +223,7 @@ public class NyARDetectMarker {
        ysize =height;\r
 //     マーカーをmarker_holderに蓄積する。\r
        NyARMarker current_marker=o_marker_list.getCurrentHolder();\r
-       NyLabelingLabel label_pt;\r
+       NyARLabelingLabel label_pt;\r
        for(i=0; i<label_num; i++ ){\r
            label_pt=labels[i];\r
            label_area=label_pt.area;\r
index 324dbc8..5d4a914 100644 (file)
 package jp.nyatla.nyartoolkit.core;\r
 \r
 import jp.nyatla.nyartoolkit.*;\r
-import jp.nyatla.nyartoolkit.core.raster.*;\r
+import jp.nyatla.nyartoolkit.core.raster.operator.*;\r
 import jp.nyatla.nyartoolkit.core.labeling.*;\r
-import jp.nyatla.nyartoolkit.core.labeling.processor.NyARLabeling;\r
+import jp.nyatla.nyartoolkit.core.labeling.processor.ARToolKitLabeling;\r
 \r
 public class NyARDetectSquare\r
 {\r
-    private final NyARLabeling _labeling;\r
+    private final ARToolKitLabeling _labeling;\r
     private final NyARDetectMarker _detecter;\r
-    private final NyLabelingImage _limage;\r
+    private final NyARLabelingImage _limage;\r
     private final NyARParam _param;\r
     private final NyARMarkerList _marker_list;\r
     \r
@@ -60,8 +60,8 @@ public class NyARDetectSquare
        \r
 \r
        this._detecter=new NyARDetectMarker(width,height);\r
-       this._labeling=new NyARLabeling();\r
-       this._limage=new NyLabelingImage(width,height);\r
+       this._labeling=new ARToolKitLabeling();\r
+       this._limage=new NyARLabelingImage(width,height);\r
        this._marker_list=new NyARMarkerList(i_max_marker);\r
        \r
        this._labeling.attachDestination(this._limage);\r
@@ -73,10 +73,10 @@ public class NyARDetectSquare
      * @param i_square_holder\r
      * @throws NyARException\r
      */\r
-    public void detectSquare(INyARRaster i_image,int i_thresh,NyARSquareList o_square_list) throws NyARException\r
+    public void detectSquare(INyARRasterReader i_reader,int i_thresh,NyARSquareList o_square_list) throws NyARException\r
     {\r
        this._labeling.setThresh(i_thresh);\r
-       this._labeling.labeling(i_image);\r
+       this._labeling.labeling(i_reader);\r
        //ラベル数が0ならマーカー検出をしない。       \r
        if(this._limage.getLabelList().getCount()<1){\r
            return;\r
@@ -2,25 +2,25 @@ package jp.nyatla.nyartoolkit.core.labeling;
 \r
 import jp.nyatla.nyartoolkit.core.types.*;\r
 \r
-public class NyLabelingImage\r
+public class NyARLabelingImage\r
 {\r
-    private TNyIntSize _size;\r
+    private TNyARIntSize _size;\r
     private int[][] _image;\r
-    private NyLabelingLabelList _label_list;\r
+    private NyARLabelingLabelList _label_list;\r
     /**\r
      * \r
      * @param i_width\r
      * @param i_height\r
      */\r
-    public NyLabelingImage(int i_width,int i_height)\r
+    public NyARLabelingImage(int i_width,int i_height)\r
     {\r
-       this._size=new TNyIntSize();\r
+       this._size=new TNyARIntSize();\r
        this._size.w=i_width;\r
        this._size.h=i_height;\r
        this._image=new int[i_height][i_width];\r
-       this._label_list=new NyLabelingLabelList();\r
+       this._label_list=new NyARLabelingLabelList();\r
     }\r
-    public TNyIntSize getSize()\r
+    public TNyARIntSize getSize()\r
     {\r
        return this._size;\r
     }\r
@@ -28,7 +28,7 @@ public class NyLabelingImage
     {\r
        return this._image;\r
     }\r
-    public NyLabelingLabelList getLabelList()\r
+    public NyARLabelingLabelList getLabelList()\r
     {\r
        return this._label_list;\r
     }\r
@@ -6,21 +6,21 @@ import jp.nyatla.nyartoolkit.NyARException;
  * NyLabelの予約型動的配列\r
  *\r
  */\r
-public class NyLabelingLabelList\r
+public class NyARLabelingLabelList\r
 {    \r
     private final static int ARRAY_APPEND_STEP=128;\r
     private final static int ARRAY_MAX=1024*16;\r
-    private final NyLabelingLabel[] _labels;\r
+    private final NyARLabelingLabel[] _labels;\r
     private int _allocated_size;\r
     private int _length;\r
     /**\r
      * 最大ARRAY_MAX個の動的割り当てバッファを準備する。\r
      * @param i_holder_size\r
      */\r
-    public NyLabelingLabelList()\r
+    public NyARLabelingLabelList()\r
     {\r
        //ポインタだけははじめに確保しておく\r
-       this._labels=new NyLabelingLabel[ARRAY_MAX];\r
+       this._labels=new NyARLabelingLabel[ARRAY_MAX];\r
        //現在アロケート中の個数は0\r
        this._allocated_size=0;\r
        this._length=0;\r
@@ -47,11 +47,11 @@ public class NyLabelingLabelList
        //アロケート\r
        for(int i=this._allocated_size;i<range;i++)\r
        {\r
-           this._labels[i]=new NyLabelingLabel();\r
+           this._labels[i]=new NyARLabelingLabel();\r
        }\r
        this._allocated_size=range;\r
     }\r
-    public final NyLabelingLabel[] getArray()\r
+    public final NyARLabelingLabel[] getArray()\r
     {\r
        return this._labels;\r
     }\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/NyLabelingRaster.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/NyLabelingRaster.java
deleted file mode 100644 (file)
index 15a860d..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-package jp.nyatla.nyartoolkit.core.labeling;\r
-\r
-import jp.nyatla.nyartoolkit.core.raster.*;\r
-import jp.nyatla.nyartoolkit.*;\r
-/**\r
- * \r
- * @author nyatla\r
- *     モノクロ256段階ラスタデータ保持クラス\r
- */\r
-public class NyLabelingRaster\r
-{\r
-    private INyARRaster _related_raster;\r
-    private int[][] _pixcels;\r
-    private int[]   _average;\r
-    private int _width;\r
-    private int _height;\r
-    \r
-    /**\r
-     * 現状の設定でラスタの保持データを初期化する。\r
-     */\r
-    private void initRaster()\r
-    {\r
-       //ワーク領域を確保\r
-       if(this._pixcels==null)\r
-       {\r
-           \r
-       }\r
-       //値を初期化(_averageが)\r
-       \r
-       \r
-    }\r
-    public NyLabelingRaster(int i_width,int i_height)\r
-    {\r
-       this._height=i_height;\r
-       this._width=i_width;\r
-       //指定サイズで初期化をする。\r
-       this._pixcels=new int[i_height][];\r
-\r
-    }\r
-    /**\r
-     * 連携するラスタオブジェクトを指定する。\r
-     * @param i_raster\r
-     */\r
-    public void SetRelatedRaster(INyARRaster i_raster) throws NyARException\r
-    {\r
-       //新しいラスタをセット\r
-       this._related_raster=i_raster;\r
-       //ラスタサイズが一致しているかを確認する。(一致していなければ例外を発生する)\r
-       if(i_raster.getSize().isEqualSize(this._width,this._height))\r
-       {\r
-           throw new NyARException();\r
-       }\r
-       //キャッシュしている情報を無効化\r
-       this._pixcels=new int[this._height][];\r
-       this._average=new int[this._height];\r
-    }\r
-    \r
-    public int[] GetLine(int i_line_no)\r
-    {\r
-       int[] line=this._pixcels[i_line_no];\r
-       if(line==null){\r
-           //ラインを作る。\r
-           line=new int[this._width];\r
-           this._related_raster.getPixelTotalRowLine(i_line_no,line);\r
-           this._pixcels[i_line_no]=line;\r
-           //平均値の計算\r
-           int ave=0;\r
-           for(int i=this._width-1;i>=0;i++){\r
-               ave+=line[i];\r
-           }\r
-           this._average[i_line_no]=ave/this._width;\r
-       }\r
-       return line;\r
-    }\r
-    public int GetLineAverage(int i_line_no)\r
-    {\r
-       if(this._pixcels[i_line_no]==null){\r
-           this.GetLine(i_line_no);\r
-       }\r
-       return this._average[i_line_no];\r
-    }\r
-    \r
-}\r
@@ -33,6 +33,7 @@ package jp.nyatla.nyartoolkit.core.labeling.processor;
 \r
 import jp.nyatla.nyartoolkit.NyARException;\r
 import jp.nyatla.nyartoolkit.core.raster.*;\r
+import jp.nyatla.nyartoolkit.core.raster.operator.INyARRasterReader;\r
 import jp.nyatla.nyartoolkit.core.labeling.*;\r
 import jp.nyatla.nyartoolkit.core.types.*;\r
 \r
@@ -49,14 +50,14 @@ import jp.nyatla.nyartoolkit.core.types.*;
  * ARToolKitと同一な評価結果を返します。\r
  *\r
  */\r
-public class NyARLabeling implements INyLabeling\r
+public class ARToolKitLabeling implements INyARLabeling\r
 {\r
     private static final int WORK_SIZE=1024*32;//#define WORK_SIZE   1024*32\r
     private final NyARWorkHolder work_holder=new NyARWorkHolder(WORK_SIZE);\r
     private int _thresh;\r
-    private TNyIntSize _dest_size;\r
-    private NyLabelingImage _out_image;\r
-    public NyARLabeling()\r
+    private TNyARIntSize _dest_size;\r
+    private NyARLabelingImage _out_image;\r
+    public ARToolKitLabeling()\r
     {\r
        this._thresh=110;\r
     }\r
@@ -66,10 +67,10 @@ public class NyARLabeling implements INyLabeling
     }\r
     //コンストラクタで作ること\r
     private int[] wk_reservLineBuffer_buf;\r
-    public void attachDestination(NyLabelingImage i_destination_image) throws NyARException\r
+    public void attachDestination(NyARLabelingImage i_destination_image) throws NyARException\r
     {\r
        //サイズチェック\r
-       TNyIntSize size=i_destination_image.getSize();\r
+       TNyARIntSize size=i_destination_image.getSize();\r
        this._out_image=i_destination_image;\r
        \r
        //ラインバッファの準備\r
@@ -100,20 +101,20 @@ public class NyARLabeling implements INyLabeling
      * 関数の代替品\r
      * ラスタimageをラベリングして、結果を保存します。\r
      * Optimize:STEP[1514->1493]\r
-     * @param i_image\r
+     * @param i_reader\r
      * @param thresh\r
      * @throws NyARException\r
      */\r
-    public void labeling(INyARRaster i_input_raster) throws NyARException\r
+    public void labeling(INyARRasterReader i_reader) throws NyARException\r
     {\r
        int wk_max;                   /*  work                */\r
        int m,n;                      /*  work                */\r
        int thresht3 = this._thresh * 3;\r
        int i,j,k;\r
-        NyLabelingImage out_image=this._out_image;     \r
+        NyARLabelingImage out_image=this._out_image;   \r
        \r
         //サイズチェック\r
-        TNyIntSize in_size=i_input_raster.getSize();\r
+        TNyARIntSize in_size=i_reader.getRasterSize();\r
         this._dest_size.isEqualSize(in_size);\r
         \r
         int lxsize=in_size.w;//lxsize = arUtil_c.arImXsize;\r
@@ -136,7 +137,7 @@ public class NyARLabeling implements INyLabeling
        for(j = 1; j < lysize - 1; j++) {//for (int j = 1; j < lysize - 1; j++, pnt += poff*2, pnt2 += 2) {\r
             label_img_pt0=label_img[j];\r
             label_img_pt1=label_img[j-1];\r
-            i_input_raster.getPixelTotalRowLine(j,line_bufferr);\r
+            i_reader.readRow(j,line_bufferr);\r
 \r
            for(i = 1; i < lxsize-1; i++) {//for(int i = 1; i < lxsize-1; i++, pnt+=poff, pnt2++) {\r
                //RGBの合計値が閾値より小さいかな?\r
@@ -318,14 +319,14 @@ public class NyARLabeling implements INyLabeling
 \r
        \r
        //ラベル情報の保存等\r
-       NyLabelingLabelList label_list=out_image.getLabelList();\r
+       NyARLabelingLabelList label_list=out_image.getLabelList();\r
 \r
        //ラベルバッファを予約\r
        label_list.reserv(wlabel_num);\r
 \r
        //エリアと重心、クリップ領域を計算\r
-       NyLabelingLabel label_pt;\r
-       NyLabelingLabel[] labels=label_list.getArray();\r
+       NyARLabelingLabel label_pt;\r
+       NyARLabelingLabel[] labels=label_list.getArray();\r
        for(i=0;i<wlabel_num;i++)\r
        {\r
            label_pt=labels[i];\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/processor/INyARLabeling.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/processor/INyARLabeling.java
new file mode 100644 (file)
index 0000000..f27a2d6
--- /dev/null
@@ -0,0 +1,11 @@
+package jp.nyatla.nyartoolkit.core.labeling.processor;\r
+\r
+import jp.nyatla.nyartoolkit.*;\r
+import jp.nyatla.nyartoolkit.core.labeling.*;\r
+import jp.nyatla.nyartoolkit.core.raster.operator.*;\r
+\r
+public interface INyARLabeling\r
+{\r
+    public void attachDestination(NyARLabelingImage i_destination_image) throws NyARException;\r
+    public void labeling(INyARRasterReader i_reader) throws NyARException;\r
+}\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/processor/INyLabeling.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/labeling/processor/INyLabeling.java
deleted file mode 100644 (file)
index 6b9c119..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-package jp.nyatla.nyartoolkit.core.labeling.processor;\r
-\r
-import jp.nyatla.nyartoolkit.*;\r
-import jp.nyatla.nyartoolkit.core.labeling.NyLabelingImage;\r
-import jp.nyatla.nyartoolkit.core.raster.*;\r
-\r
-\r
-public interface INyLabeling\r
-{\r
-    public void attachDestination(NyLabelingImage i_destination_image) throws NyARException;\r
-    public void labeling(INyARRaster i_input_raster) throws NyARException;\r
-}\r
index 6896a41..c4bb8a8 100644 (file)
@@ -33,7 +33,7 @@ package jp.nyatla.nyartoolkit.core.match;
 \r
 import jp.nyatla.nyartoolkit.NyARException;\r
 import jp.nyatla.nyartoolkit.core.NyARCode;\r
-import jp.nyatla.nyartoolkit.core.pickup.INyColorPatt;\r
+import jp.nyatla.nyartoolkit.core.pickup.INyARColorPatt;\r
 \r
 \r
 \r
@@ -49,7 +49,7 @@ public interface NyARMatchPatt{
     public double getConfidence();\r
     public int getDirection();\r
     public void evaluate(NyARCode i_code);\r
-    public boolean setPatt(INyColorPatt i_target_patt) throws NyARException;\r
+    public boolean setPatt(INyARColorPatt i_target_patt) throws NyARException;\r
 }\r
 \r
 \r
index f7adc6f..9034298 100644 (file)
@@ -33,7 +33,7 @@ package jp.nyatla.nyartoolkit.core.match;
 \r
 import jp.nyatla.nyartoolkit.NyARException;\r
 import jp.nyatla.nyartoolkit.core.*;\r
-import jp.nyatla.nyartoolkit.core.pickup.INyColorPatt;\r
+import jp.nyatla.nyartoolkit.core.pickup.INyARColorPatt;\r
 \r
 /**\r
  * AR_TEMPLATE_MATCHING_BWと同等のルールで\r
@@ -48,7 +48,7 @@ public class NyARMatchPatt_BlackWhite implements NyARMatchPatt{
     private int dir=0;\r
     private int ave;\r
     private int[][][]  input=new int[height][width][3];\r
-    public boolean setPatt(INyColorPatt i_target_patt) throws NyARException\r
+    public boolean setPatt(INyARColorPatt i_target_patt) throws NyARException\r
     {\r
        width=i_target_patt.getWidth();\r
        height=i_target_patt.getHeight();\r
index 2de4a0e..2725f6a 100644 (file)
@@ -33,7 +33,7 @@ package jp.nyatla.nyartoolkit.core.match;
 \r
 import jp.nyatla.nyartoolkit.NyARException;\r
 import jp.nyatla.nyartoolkit.core.*;\r
-import jp.nyatla.nyartoolkit.core.pickup.INyColorPatt;\r
+import jp.nyatla.nyartoolkit.core.pickup.INyARColorPatt;\r
 \r
 /**\r
  * AR_TEMPLATE_MATCHING_COLORかつAR_MATCHING_WITHOUT_PCAと同等のルールで\r
@@ -69,7 +69,7 @@ public class NyARMatchPatt_Color_WITHOUT_PCA implements NyARMatchPatt{
         this.height=i_height;\r
         this.width =i_width;\r
     }\r
-    public boolean setPatt(INyColorPatt i_target_patt) throws NyARException\r
+    public boolean setPatt(INyARColorPatt i_target_patt) throws NyARException\r
     { \r
        int i,k;\r
        int[][][] data,linput;\r
index b87e0f9..f6a96d0 100644 (file)
@@ -33,7 +33,7 @@ package jp.nyatla.nyartoolkit.core.match;
 \r
 import jp.nyatla.nyartoolkit.NyARException;\r
 import jp.nyatla.nyartoolkit.core.NyARCode;\r
-import jp.nyatla.nyartoolkit.core.pickup.INyColorPatt;\r
+import jp.nyatla.nyartoolkit.core.pickup.INyARColorPatt;\r
 \r
 /**\r
  * AR_TEMPLATE_MATCHING_COLORかつAR_MATCHING_WITH_PCAと同等のルールで\r
@@ -59,7 +59,7 @@ public class NyARMatchPatt_Color_WITH_PCA implements NyARMatchPatt{
     public int getDirection(){\r
        return dir;\r
     }\r
-    public boolean setPatt(INyColorPatt i_target_patt) throws NyARException\r
+    public boolean setPatt(INyARColorPatt i_target_patt) throws NyARException\r
     {\r
        width=i_target_patt.getWidth();\r
        height=i_target_patt.getHeight();\r
@@ -35,7 +35,7 @@ import jp.nyatla.nyartoolkit.NyARException;
 import jp.nyatla.nyartoolkit.core.NyARSquare;\r
 import jp.nyatla.nyartoolkit.core.raster.*;\r
 \r
-public interface INyColorPatt\r
+public interface INyARColorPatt\r
 {\r
 //     消すかも。\r
 //    /**\r
@@ -73,5 +73,5 @@ public interface INyColorPatt
      * ラスターの取得に成功するとTRUE/失敗するとFALSE\r
      * @throws NyARException\r
      */\r
-    public boolean pickFromRaster(INyARRaster image, NyARSquare i_square) throws NyARException;\r
+    public boolean pickFromRaster(NyARRaster image, NyARSquare i_square) throws NyARException;\r
 }
\ No newline at end of file
index 1521b50..18af4af 100644 (file)
@@ -34,7 +34,7 @@ package jp.nyatla.nyartoolkit.core.pickup;
 import jp.nyatla.nyartoolkit.NyARException;\r
 import jp.nyatla.nyartoolkit.core.NyARMat;\r
 import jp.nyatla.nyartoolkit.core.NyARSquare;\r
-import jp.nyatla.nyartoolkit.core.raster.INyARRaster;\r
+import jp.nyatla.nyartoolkit.core.raster.NyARRaster;\r
 \r
 /**\r
  * 24ビットカラーのマーカーを保持するために使うクラスです。\r
@@ -42,7 +42,7 @@ import jp.nyatla.nyartoolkit.core.raster.INyARRaster;
  * 演算順序以外の最適化をしたもの\r
  *\r
  */\r
-public class NyARColorPatt_O1 implements INyColorPatt\r
+public class NyARColorPatt_O1 implements INyARColorPatt\r
 {\r
     private static final int AR_PATT_SAMPLE_NUM=64;//#define   AR_PATT_SAMPLE_NUM   64\r
     private int extpat[][][];\r
@@ -186,7 +186,7 @@ public class NyARColorPatt_O1 implements INyColorPatt
      * 切り出しに失敗した\r
      * @throws Exception\r
      */\r
-    public boolean pickFromRaster(INyARRaster image, NyARSquare i_square) throws NyARException\r
+    public boolean pickFromRaster(NyARRaster image, NyARSquare i_square) throws NyARException\r
     {\r
        double          d, xw, yw;\r
        int             xc, yc;\r
index be8bed3..994251b 100644 (file)
@@ -36,7 +36,7 @@ package jp.nyatla.nyartoolkit.core.pickup;
 import jp.nyatla.nyartoolkit.NyARException;\r
 import jp.nyatla.nyartoolkit.core.NyARMat;\r
 import jp.nyatla.nyartoolkit.core.NyARSquare;\r
-import jp.nyatla.nyartoolkit.core.raster.INyARRaster;\r
+import jp.nyatla.nyartoolkit.core.raster.NyARRaster;\r
 \r
 /**\r
  * 24ビットカラーのマーカーを保持するために使うクラスです。\r
@@ -44,7 +44,7 @@ import jp.nyatla.nyartoolkit.core.raster.INyARRaster;
  * 演算順序を含む最適化をしたもの\r
  *\r
  */\r
-public class NyARColorPatt_O3 implements INyColorPatt\r
+public class NyARColorPatt_O3 implements INyARColorPatt\r
 {\r
     private static final int AR_PATT_SAMPLE_NUM=64;//#define   AR_PATT_SAMPLE_NUM   64\r
     private int extpat[][][];\r
@@ -168,7 +168,7 @@ public class NyARColorPatt_O3 implements INyColorPatt
      * @param i_marker\r
      * @throws Exception\r
      */\r
-    public boolean pickFromRaster(INyARRaster image, NyARSquare i_square) throws NyARException\r
+    public boolean pickFromRaster(NyARRaster image, NyARSquare i_square) throws NyARException\r
     {\r
        NyARMat cpara=this.wk_pickFromRaster_cpara;\r
        int[][] local=i_square.imvertex;\r
@@ -263,7 +263,7 @@ public class NyARColorPatt_O3 implements INyColorPatt
        return;\r
     }\r
     \r
-    private void updateExtpat(INyARRaster image,NyARMat i_cpara,int i_xdiv2,int i_ydiv2) throws NyARException\r
+    private void updateExtpat(NyARRaster image,NyARMat i_cpara,int i_xdiv2,int i_ydiv2) throws NyARException\r
     {\r
        int img_x=image.getWidth();\r
        int img_y=image.getHeight();\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/NyARRaster.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/NyARRaster.java
new file mode 100644 (file)
index 0000000..fab9476
--- /dev/null
@@ -0,0 +1,103 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster;\r
+\r
+import jp.nyatla.nyartoolkit.core.types.*;\r
+import jp.nyatla.nyartoolkit.*;\r
+\r
+public abstract class NyARRaster\r
+{\r
+    //\r
+    //定数\r
+    //\r
+    \r
+    //getBufferType関数の返すバッファフォーマット\r
+\r
+    /**\r
+     * RGB24フォーマットで、全ての画素が0\r
+     */\r
+    public static final int BUFFERFORMAT_NULL_ALLZERO=0x0001;\r
+    /**\r
+     * byte[]で、R8G8B8の24ビットで画素が格納されている。\r
+     */\r
+    public static final int BUFFERFORMAT_BYTE_R8G8B8_24=0x0101;\r
+    /**\r
+     * byte[]で、B8G8R8の24ビットで画素が格納されている。\r
+     */\r
+    public static final int BUFFERFORMAT_BYTE_B8G8R8_24=0x0102;\r
+    /**\r
+     * byte[]で、R8G8B8X8の32ビットで画素が格納されている。\r
+     */\r
+    public static final int BUFFERFORMAT_BYTE_B8G8R8X8_32=0x0201;\r
+\r
+    public static final int BUFFERFORMAT_INT2D=0x0301;\r
+    \r
+    //\r
+    //abstract関数\r
+    //\r
+    \r
+    /**\r
+     * 1ピクセルをint配列にして返します。\r
+     * @param i_x\r
+     * @param i_y\r
+     * @param i_rgb\r
+     */\r
+    public abstract void getPixel(int i_x,int i_y,int[] i_rgb);\r
+    /**\r
+     * 複数のピクセル値をi_rgbへ返します。\r
+     * @param i_x\r
+     * xのインデックス配列\r
+     * @param i_y\r
+     * yのインデックス配列\r
+     * @param i_num\r
+     * 返すピクセル値の数\r
+     * @param i_rgb\r
+     * ピクセル値を返すバッファ\r
+     */\r
+    public abstract void getPixelSet(int[] i_x,int i_y[],int i_num,int[] o_rgb);\r
+    public abstract int getWidth();\r
+    public abstract int getHeight();\r
+    public abstract TNyARIntSize getSize();\r
+    /**\r
+     * バッファオブジェクトを返します。\r
+     * @return\r
+     */\r
+    public abstract Object getBufferObject();\r
+    /**\r
+     * バッファオブジェクトのタイプを返します。\r
+     * @return\r
+     */\r
+    public abstract int getBufferType() throws NyARException;\r
+}\r
+\r
+\r
+\r
index 94397b4..2f7717a 100644 (file)
  */\r
 package jp.nyatla.nyartoolkit.core.raster;\r
 \r
-\r
 public class NyARRaster_BGRA extends NyARRaster_BasicClass\r
 {\r
-    private byte[] ref_buf;\r
+    private byte[] _ref_buf;\r
+\r
     public static NyARRaster_BGRA wrap(byte[] i_buffer,int i_width,int i_height)\r
     {\r
         NyARRaster_BGRA new_inst=new NyARRaster_BGRA();\r
-        new_inst.ref_buf=i_buffer;\r
+        new_inst._ref_buf=i_buffer;\r
         new_inst._size.w=i_width;\r
         new_inst._size.h=i_height;\r
         return new_inst;\r
     }\r
-    //RGBの合計値を返す\r
-    public int getPixelTotal(int i_x,int i_y)\r
-    {\r
-        int bp=(i_x+i_y*this._size.w)*4;\r
-        byte[] ref=this.ref_buf;\r
-        return (ref[bp] & 0xff)+(ref[bp+1] & 0xff)+(ref[bp+2] & 0xff);\r
-    }\r
+    //\r
+    //仮想関数の実装\r
+    //\r
+\r
     public void getPixelTotalRowLine(int i_row,int[] o_line)\r
     {\r
-        final byte[] ref=this.ref_buf;\r
+        final byte[] ref=this._ref_buf;\r
         int bp=(i_row+1)*this._size.w*4-4;\r
         for(int i=this._size.w-1;i>=0;i--){\r
            o_line[i]=(ref[bp] & 0xff)+(ref[bp+1] & 0xff)+(ref[bp+2] & 0xff);\r
@@ -61,7 +58,7 @@ public class NyARRaster_BGRA extends NyARRaster_BasicClass
     }\r
     public void getPixel(int i_x,int i_y,int[] i_rgb)\r
     {\r
-       byte[] ref=this.ref_buf;\r
+       byte[] ref=this._ref_buf;\r
         int bp=(i_x+i_y*this._size.w)*4;\r
         i_rgb[0]=(ref[bp+2] & 0xff);//R\r
         i_rgb[1]=(ref[bp+1] & 0xff);//G\r
@@ -70,7 +67,7 @@ public class NyARRaster_BGRA extends NyARRaster_BasicClass
     public void getPixelSet(int[] i_x,int i_y[],int i_num,int[] o_rgb)\r
     {\r
        int width=this._size.w;\r
-       byte[] ref=this.ref_buf;\r
+       byte[] ref=this._ref_buf;\r
        int bp;\r
        for(int i=i_num-1;i>=0;i--){\r
            bp=(i_x[i]+i_y[i]*width)*4;\r
@@ -79,5 +76,13 @@ public class NyARRaster_BGRA extends NyARRaster_BasicClass
            o_rgb[i*3+2]=(ref[bp+0] & 0xff);//B\r
        }       \r
     }\r
+    public Object getBufferObject()\r
+    {\r
+       return this._ref_buf;\r
+    }\r
+    public int getBufferType()\r
+    {\r
+       return BUFFERFORMAT_BYTE_B8G8R8X8_32;\r
+    }\r
 }\r
 \r
index ae818e3..11f1fbd 100644 (file)
@@ -1,3 +1,34 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
 package jp.nyatla.nyartoolkit.core.raster;\r
 \r
 import jp.nyatla.nyartoolkit.core.types.*;\r
@@ -6,9 +37,9 @@ import jp.nyatla.nyartoolkit.core.types.*;
  * \r
  *\r
  */\r
-public abstract class NyARRaster_BasicClass implements INyARRaster \r
+public abstract class NyARRaster_BasicClass extends NyARRaster \r
 {\r
-    final protected TNyIntSize _size=new TNyIntSize();\r
+    final protected TNyARIntSize _size=new TNyARIntSize();\r
     final public int getWidth()\r
     {\r
        return this._size.w;\r
@@ -17,7 +48,7 @@ public abstract class NyARRaster_BasicClass implements INyARRaster
     {\r
        return this._size.h;\r
     }\r
-    final public TNyIntSize getSize()\r
+    final public TNyARIntSize getSize()\r
     {\r
        return this._size;\r
     }\r
index 33987fe..e2c761b 100644 (file)
@@ -43,17 +43,6 @@ public class NyARRaster_Blank extends NyARRaster_BasicClass
        this._size.w=i_width;\r
         this._size.h=i_height;\r
     }\r
-    //RGBの合計値を返す\r
-    public int getPixelTotal(int i_x,int i_y)\r
-    {\r
-       return 0;\r
-    }\r
-    public void getPixelTotalRowLine(int i_row,int[] o_line)\r
-    {\r
-        for(int i=this._size.w-1;i>=0;i--){\r
-           o_line[i]=0;\r
-       }\r
-    }    \r
     public void getPixel(int i_x,int i_y,int[] i_rgb)\r
     {\r
         i_rgb[0]=0;\r
@@ -67,5 +56,13 @@ public class NyARRaster_Blank extends NyARRaster_BasicClass
            o_rgb[i*3+1]=0;//G\r
            o_rgb[i*3+2]=0;//B\r
        }       \r
+    }\r
+    public Object getBufferObject()\r
+    {\r
+       return null;\r
+    }\r
+    public int getBufferType()\r
+    {\r
+       return BUFFERFORMAT_NULL_ALLZERO;\r
     }    \r
 }\r
  */\r
 package jp.nyatla.nyartoolkit.core.raster;\r
 \r
-import jp.nyatla.nyartoolkit.core.types.*;\r
 \r
-public interface INyARRaster{\r
-    //RGBの合計値を返す\r
-    public int getPixelTotal(int i_x,int i_y);\r
-    /**\r
-     * 一行単位でi_row番目の合計値配列を計算して返す。\r
-     * @param i_row\r
-     * @param o_line\r
-     * getWidth()の戻り値以上のサイズが必要。\r
-     */\r
-    public void getPixelTotalRowLine(int i_row,int[] o_line);\r
-    public void getPixel(int i_x,int i_y,int[] i_rgb);\r
+\r
+\r
+\r
+public class NyARRaster_Int2d extends NyARRaster_BasicClass\r
+{\r
+    protected int[][] _ref_buf;\r
+    public NyARRaster_Int2d(int i_width,int i_height)\r
+    {\r
+       this._ref_buf=new int[i_height][i_width];\r
+       this._size.w=i_width;\r
+       this._size.h=i_height;\r
+       \r
+    }\r
+    \r
+    \r
+    public void getPixel(int i_x,int i_y,int[] i_rgb)\r
+    {\r
+        int[][] ref=this._ref_buf;\r
+        int v=ref[i_x][i_y];\r
+        i_rgb[0]=v;\r
+        i_rgb[1]=v;\r
+        i_rgb[2]=v;\r
+    }\r
+    public void getPixelSet(int[] i_x,int i_y[],int i_num,int[] o_rgb)\r
+    {\r
+       int[][] ref=this._ref_buf;\r
+       for(int i=i_num-1;i>=0;i--){\r
+           int v=ref[i_x[i]][i_y[i]];\r
+           o_rgb[i*3+0]=v;\r
+           o_rgb[i*3+1]=v;\r
+           o_rgb[i*3+2]=v;\r
+       }       \r
+    }\r
+    public Object getBufferObject()\r
+    {\r
+       return this._ref_buf;\r
+    }\r
     /**\r
-     * 複数のピクセル値をi_rgbへ返します。\r
-     * @param i_x\r
-     * xのインデックス配列\r
-     * @param i_y\r
-     * yのインデックス配列\r
-     * @param i_num\r
-     * 返すピクセル値の数\r
-     * @param i_rgb\r
-     * ピクセル値を返すバッファ\r
+     * バッファオブジェクトのタイプを返します。\r
+     * @return\r
      */\r
-    public void getPixelSet(int[] i_x,int i_y[],int i_num,int[] o_rgb);\r
-    public int getWidth();\r
-    public int getHeight();\r
-    public TNyIntSize getSize();\r
+    public int getBufferType()\r
+    {\r
+       return BUFFERFORMAT_INT2D;\r
+    }    \r
 }\r
 \r
-\r
-\r
index adce387..3463c40 100644 (file)
@@ -33,37 +33,22 @@ package jp.nyatla.nyartoolkit.core.raster;
 \r
 \r
 \r
+\r
 public class NyARRaster_RGB extends NyARRaster_BasicClass\r
 {\r
-    protected byte[] ref_buf;\r
+    protected byte[] _ref_buf;\r
     public static NyARRaster_RGB wrap(byte[] i_buffer,int i_width,int i_height)\r
     {\r
         NyARRaster_RGB new_inst=new NyARRaster_RGB();\r
-        new_inst.ref_buf=i_buffer;\r
+        new_inst._ref_buf=i_buffer;\r
         new_inst._size.w=i_width;\r
         new_inst._size.h=i_height;\r
         return new_inst;\r
     }\r
-    //RGBの合計値を返す\r
-    public int getPixelTotal(int i_x,int i_y)\r
-    {\r
-       byte[] ref=this.ref_buf;\r
-        int bp=(i_x+i_y*this._size.w)*3;\r
-        return (ref[bp] & 0xff)+(ref[bp+1] & 0xff)+(ref[bp+2] & 0xff);\r
-    }\r
-    public void getPixelTotalRowLine(int i_row,int[] o_line)\r
-    {\r
-        final byte[] ref=this.ref_buf;\r
-        int bp=(i_row+1)*this._size.w*3-3;\r
-        for(int i=this._size.w-1;i>=0;i--){\r
-           o_line[i]=(ref[bp] & 0xff)+(ref[bp+1] & 0xff)+(ref[bp+2] & 0xff);\r
-           bp-=3;\r
-       }\r
-    }\r
     public void getPixel(int i_x,int i_y,int[] i_rgb)\r
     {\r
         int bp=(i_x+i_y*this._size.w)*3;\r
-        byte[] ref=this.ref_buf;\r
+        byte[] ref=this._ref_buf;\r
         i_rgb[0]=(ref[bp+0] & 0xff);//R\r
         i_rgb[1]=(ref[bp+1] & 0xff);//G\r
         i_rgb[2]=(ref[bp+2] & 0xff);//B\r
@@ -71,7 +56,7 @@ public class NyARRaster_RGB extends NyARRaster_BasicClass
     public void getPixelSet(int[] i_x,int i_y[],int i_num,int[] o_rgb)\r
     {\r
        int width=this._size.w;\r
-       byte[] ref=this.ref_buf;\r
+       byte[] ref=this._ref_buf;\r
        int bp;\r
        for(int i=i_num-1;i>=0;i--){\r
            bp=(i_x[i]+i_y[i]*width)*3;\r
@@ -80,5 +65,17 @@ public class NyARRaster_RGB extends NyARRaster_BasicClass
            o_rgb[i*3+2]=(ref[bp+2] & 0xff);//B\r
        }       \r
     }\r
+    public Object getBufferObject()\r
+    {\r
+       return this._ref_buf;\r
+    }\r
+    /**\r
+     * バッファオブジェクトのタイプを返します。\r
+     * @return\r
+     */\r
+    public int getBufferType()\r
+    {\r
+       return BUFFERFORMAT_BYTE_R8G8B8_24;\r
+    }    \r
 }\r
 \r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/INyARRasterFilter.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/INyARRasterFilter.java
new file mode 100644 (file)
index 0000000..c242513
--- /dev/null
@@ -0,0 +1,40 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.filter;\r
+\r
+import jp.nyatla.nyartoolkit.*;\r
+import jp.nyatla.nyartoolkit.core.raster.*;\r
+\r
+public interface INyARRasterFilter\r
+{\r
+   public void doFilter(NyARRaster i_input,NyARRaster i_output) throws NyARException;\r
+}
\ No newline at end of file
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_AreaAverage.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_AreaAverage.java
new file mode 100644 (file)
index 0000000..8296fc2
--- /dev/null
@@ -0,0 +1,90 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.filter;\r
+\r
+import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.core.raster.NyARRaster;\r
+import jp.nyatla.nyartoolkit.core.types.*;\r
+/**\r
+ * 平均移動法を使った2値化フィルタ\r
+ *\r
+ */\r
+public class NyARRasterFilter_AreaAverage implements INyARRasterFilter\r
+{\r
+    private int _area=4;\r
+    public void doFilter(NyARRaster i_input,NyARRaster i_output) throws NyARException\r
+    {\r
+       assert(i_input.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       assert(i_output.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+\r
+       TNyARIntSize size=i_output.getSize();\r
+       assert(i_input.getSize().isEqualSize(i_output.getSize())==true);\r
+       assert(size.h%8==0 && size.w%8==0);\r
+               \r
+       int[][] out_buf=(int [][])i_output.getBufferObject();\r
+       int[][] in_buf=(int[][])i_input.getBufferObject();\r
+       \r
+       \r
+       int area=this._area;\r
+       int y1=area;\r
+       int x1=area;\r
+       int y2=size.h-area;\r
+       int x2=size.w-area;\r
+       \r
+       for(int y=y1;y<y2;y++){\r
+           int sum,nn;\r
+           sum=nn=0;\r
+           for(int yy=y-area;yy<y+area+1;yy++){\r
+               for(int xx=x1-area;xx<x1+area;xx++){\r
+                    sum+=in_buf[yy][xx];\r
+                    nn++;\r
+               }\r
+           }\r
+           boolean first=true;\r
+           for(int x=area;x<x2;x++){\r
+               if(!first){\r
+                   for(int yy=y-area;yy<y+area;yy++){\r
+                       sum+=in_buf[yy][x+area];\r
+                       sum-=in_buf[yy][x-area];\r
+                   }\r
+               }\r
+               first=false;\r
+               int th=(sum/nn);\r
+               \r
+               int g=in_buf[y][x];\r
+               out_buf[y][x]=th<g?255:0;\r
+           }\r
+       }\r
+       return;\r
+    }    \r
+\r
+}\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_Edge.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_Edge.java
new file mode 100644 (file)
index 0000000..a6d4277
--- /dev/null
@@ -0,0 +1,68 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.filter;\r
+\r
+import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.core.raster.NyARRaster;\r
+import jp.nyatla.nyartoolkit.core.types.TNyARIntSize;\r
+/**\r
+ * エッジ検出フィルタ\r
+ * 入力\r
+ * BUFFERFORMAT_INT2D\r
+ * 出力\r
+ * BUFFERFORMAT_INT2D\r
+ */\r
+public class NyARRasterFilter_Edge implements INyARRasterFilter\r
+{\r
+    public void doFilter(NyARRaster i_input,NyARRaster i_output) throws NyARException\r
+    {\r
+       assert(i_input.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       assert(i_output.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       assert(i_input.getSize().isEqualSize(i_output.getSize())==true);\r
+       \r
+       int[][] out_buf=(int [][])i_output.getBufferObject();\r
+       int[][] in_buf=(int[][])i_input.getBufferObject();\r
+       \r
+       int bp=0;\r
+       TNyARIntSize size=i_output.getSize();\r
+       for(int y=1;y<size.h;y++){\r
+           int prev=128;\r
+           for(int x=1;x<size.w;x++){\r
+               int w=in_buf[y][x];\r
+               out_buf[y][x]=(Math.abs(w-prev)+Math.abs(w-in_buf[y-1][x]))/2;\r
+               prev=w;\r
+                bp+=3;\r
+           }\r
+       }\r
+       return;\r
+    }\r
+}\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbAnd.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbAnd.java
new file mode 100644 (file)
index 0000000..00b6509
--- /dev/null
@@ -0,0 +1,62 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.filter;\r
+\r
+import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.core.raster.NyARRaster;\r
+import jp.nyatla.nyartoolkit.core.types.TNyARIntSize;\r
+/**\r
+ * \r
+ *\r
+ */\r
+public class NyARRasterFilter_RgbAnd implements INyARRasterFilter\r
+{ \r
+    public void doFilter(NyARRaster i_input,NyARRaster i_output) throws NyARException\r
+    {\r
+       assert(i_input.getBufferType()==NyARRaster.BUFFERFORMAT_BYTE_B8G8R8_24);\r
+       assert(i_output.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       assert(i_input.getSize().isEqualSize(i_output.getSize())==true);\r
+       \r
+       int [][] out_buf=(int [][])i_output.getBufferObject();\r
+       byte[] in_buf=(byte[])i_input.getBufferObject();\r
+       \r
+       int bp=0;\r
+       TNyARIntSize size=i_output.getSize();\r
+       for(int y=0;y<size.h;y++){\r
+           for(int x=0;x<size.w;x++){\r
+               out_buf[y][x]=((in_buf[bp] & 0xff)&(in_buf[bp+1] & 0xff)&(in_buf[bp+2] & 0xff));\r
+                bp+=3;\r
+           }\r
+       }\r
+       return;\r
+    }\r
+}
\ No newline at end of file
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbMul.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbMul.java
new file mode 100644 (file)
index 0000000..d124f01
--- /dev/null
@@ -0,0 +1,59 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.filter;\r
+\r
+import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.core.raster.NyARRaster;\r
+import jp.nyatla.nyartoolkit.core.types.TNyARIntSize;\r
+\r
+public class NyARRasterFilter_RgbMul implements INyARRasterFilter\r
+{\r
+    public void doFilter(NyARRaster i_input,NyARRaster i_output) throws NyARException\r
+    {\r
+       assert(i_input.getBufferType()==NyARRaster.BUFFERFORMAT_BYTE_B8G8R8_24);\r
+       assert(i_output.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       assert(i_input.getSize().isEqualSize(i_output.getSize())==true);\r
+       \r
+       int [][] out_buf=(int [][])i_output.getBufferObject();\r
+       byte[] in_buf=(byte[])i_input.getBufferObject();\r
+       \r
+       int bp=0;\r
+       TNyARIntSize size=i_output.getSize();\r
+       for(int y=0;y<size.h;y++){\r
+           for(int x=0;x<size.w;x++){\r
+               out_buf[y][x]=((in_buf[bp] & 0xff)*(in_buf[bp+1] & 0xff)*(in_buf[bp+2] & 0xff))>>16;\r
+                bp+=3;\r
+           }\r
+       }\r
+       return;\r
+    }\r
+}\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbOr.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbOr.java
new file mode 100644 (file)
index 0000000..95e743e
--- /dev/null
@@ -0,0 +1,59 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.filter;\r
+\r
+import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.core.raster.NyARRaster;\r
+import jp.nyatla.nyartoolkit.core.types.TNyARIntSize;\r
+\r
+public class NyARRasterFilter_RgbOr implements INyARRasterFilter\r
+{ \r
+    public void doFilter(NyARRaster i_input,NyARRaster i_output) throws NyARException\r
+    {\r
+       assert(i_input.getBufferType()==NyARRaster.BUFFERFORMAT_BYTE_B8G8R8_24);\r
+       assert(i_output.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       assert(i_input.getSize().isEqualSize(i_output.getSize())==true);\r
+       \r
+       int [][] out_buf=(int [][])i_output.getBufferObject();\r
+       byte[] in_buf=(byte[])i_input.getBufferObject();\r
+       \r
+       int bp=0;\r
+       TNyARIntSize size=i_output.getSize();\r
+       for(int y=0;y<size.h;y++){\r
+           for(int x=0;x<size.w;x++){\r
+               out_buf[y][x]=((in_buf[bp] & 0xff)|(in_buf[bp+1] & 0xff)|(in_buf[bp+2] & 0xff));\r
+                bp+=3;\r
+           }\r
+       }\r
+       return;\r
+    }\r
+}
\ No newline at end of file
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbSum.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbSum.java
new file mode 100644 (file)
index 0000000..6ed09e6
--- /dev/null
@@ -0,0 +1,59 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.filter;\r
+\r
+import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.core.raster.NyARRaster;\r
+import jp.nyatla.nyartoolkit.core.types.TNyARIntSize;\r
+\r
+public class NyARRasterFilter_RgbSum implements INyARRasterFilter\r
+{ \r
+    public void doFilter(NyARRaster i_input,NyARRaster i_output) throws NyARException\r
+    {\r
+       assert(i_input.getBufferType()==NyARRaster.BUFFERFORMAT_BYTE_B8G8R8_24);\r
+       assert(i_output.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       assert(i_input.getSize().isEqualSize(i_output.getSize())==true);\r
+       \r
+       int [][] out_buf=(int [][])i_output.getBufferObject();\r
+       byte[] in_buf=(byte[])i_input.getBufferObject();\r
+       \r
+       int bp=0;\r
+       TNyARIntSize size=i_output.getSize();\r
+       for(int y=0;y<size.h;y++){\r
+           for(int x=0;x<size.w;x++){\r
+               out_buf[y][x]=((in_buf[bp] & 0xff)+(in_buf[bp+1] & 0xff)+(in_buf[bp+2] & 0xff))/3;\r
+                bp+=3;\r
+           }\r
+       }\r
+       return;\r
+    }\r
+}
\ No newline at end of file
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbXor.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_RgbXor.java
new file mode 100644 (file)
index 0000000..b262094
--- /dev/null
@@ -0,0 +1,59 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.filter;\r
+\r
+import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.core.raster.NyARRaster;\r
+import jp.nyatla.nyartoolkit.core.types.TNyARIntSize;\r
+\r
+public class NyARRasterFilter_RgbXor implements INyARRasterFilter\r
+{ \r
+    public void doFilter(NyARRaster i_input,NyARRaster i_output) throws NyARException\r
+    {\r
+       assert(i_input.getBufferType()==NyARRaster.BUFFERFORMAT_BYTE_B8G8R8_24);\r
+       assert(i_output.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       assert(i_input.getSize().isEqualSize(i_output.getSize())==true);\r
+       \r
+       int [][] out_buf=(int [][])i_output.getBufferObject();\r
+       byte[] in_buf=(byte[])i_input.getBufferObject();\r
+       \r
+       int bp=0;\r
+       TNyARIntSize size=i_output.getSize();\r
+       for(int y=0;y<size.h;y++){\r
+           for(int x=0;x<size.w;x++){\r
+               out_buf[y][x]=((in_buf[bp] & 0xff)^(in_buf[bp+1] & 0xff)^(in_buf[bp+2] & 0xff));\r
+                bp+=3;\r
+           }\r
+       }\r
+       return;\r
+    }\r
+}
\ No newline at end of file
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_Threshold.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/filter/NyARRasterFilter_Threshold.java
new file mode 100644 (file)
index 0000000..d9fbc79
--- /dev/null
@@ -0,0 +1,68 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.filter;\r
+\r
+import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.core.raster.NyARRaster;\r
+import jp.nyatla.nyartoolkit.core.types.TNyARIntSize;\r
+\r
+/**\r
+ * 定数閾値による2値化をする。\r
+ *\r
+ */\r
+public class NyARRasterFilter_Threshold implements INyARRasterFilter\r
+{\r
+    private int _threshold;\r
+    public NyARRasterFilter_Threshold(int i_threshold)\r
+    {\r
+       this._threshold=i_threshold;\r
+    }\r
+    public void doFilter(NyARRaster i_input,NyARRaster i_output) throws NyARException\r
+    {\r
+       assert(i_input.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       assert(i_output.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       assert(i_input.getSize().isEqualSize(i_output.getSize())==true);\r
+       \r
+       int[][] out_buf=(int [][])i_output.getBufferObject();\r
+       int[][] in_buf=(int[][])i_input.getBufferObject();\r
+       \r
+       int bp=0;\r
+       TNyARIntSize size=i_output.getSize();\r
+       for(int y=0;y<size.h-1;y++){\r
+           for(int x=0;x<size.w;x++){\r
+               out_buf[y][x]=in_buf[y][x]>this._threshold?255:0;\r
+                bp+=3;\r
+           }\r
+       }\r
+       return;\r
+    }\r
+}\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/INyARRasterReader.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/INyARRasterReader.java
new file mode 100644 (file)
index 0000000..2f64e15
--- /dev/null
@@ -0,0 +1,41 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.operator;\r
+\r
+import jp.nyatla.nyartoolkit.core.types.*;\r
+\r
+public interface INyARRasterReader\r
+{\r
+    public void readRow(int i_row,int[] out_line);\r
+    public int getThreshold();\r
+    public TNyARIntSize getRasterSize();\r
+}\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/INyARRasterReaderFactory.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/INyARRasterReaderFactory.java
new file mode 100644 (file)
index 0000000..fdc670b
--- /dev/null
@@ -0,0 +1,40 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.operator;\r
+\r
+import jp.nyatla.nyartoolkit.*;\r
+import jp.nyatla.nyartoolkit.core.raster.*;\r
+\r
+public interface INyARRasterReaderFactory\r
+{\r
+    public INyARRasterReader createReader(NyARRaster i_raster) throws NyARException;\r
+}
\ No newline at end of file
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/NyARRasterReaderFactory_RgbMul.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/NyARRasterReaderFactory_RgbMul.java
new file mode 100644 (file)
index 0000000..9cb4626
--- /dev/null
@@ -0,0 +1,150 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.operator;\r
+\r
+import jp.nyatla.nyartoolkit.core.raster.*;\r
+import jp.nyatla.nyartoolkit.core.types.*;\r
+import jp.nyatla.nyartoolkit.*;\r
+\r
+public final class NyARRasterReaderFactory_RgbMul implements INyARRasterReaderFactory{\r
+    public INyARRasterReader createReader(NyARRaster i_raster) throws NyARException\r
+    {\r
+       switch(i_raster.getBufferType()){\r
+       case NyARRaster.BUFFERFORMAT_BYTE_B8G8R8X8_32:\r
+           return new NyARRasterReader_RgbMul_BYTE_C8C8C8X8(i_raster);\r
+       case NyARRaster.BUFFERFORMAT_BYTE_B8G8R8_24:\r
+       case NyARRaster.BUFFERFORMAT_BYTE_R8G8B8_24:\r
+           return new NyARRasterReader_RgbMul_BYTE_C8C8C8(i_raster);\r
+       case NyARRaster.BUFFERFORMAT_NULL_ALLZERO:\r
+           return new NyARRasterReader_RgbMul_NULL_ALLZERO(i_raster);\r
+       default:\r
+           throw new NyARException();\r
+       }\r
+    }\r
+}\r
+\r
+abstract class NyARRasterReader_RgbMul_BaseClass implements INyARRasterReader\r
+{\r
+    protected NyARRaster _raster;\r
+    protected TNyARIntSize _size;    \r
+    public final TNyARIntSize getRasterSize()\r
+    {\r
+       return this._size;\r
+    }\r
+    public final int getThreshold()\r
+    {\r
+       int[] work=new int[this._size.w];\r
+       int hi=0;int low=16581375;\r
+       int ave,sum2;\r
+       ave=0;\r
+       for(int i2=0;i2<8;i2++){            \r
+           this.readRow(this._size.h*i2/8,work);\r
+           sum2=0;\r
+           for(int i=0;i<this._size.w;i++){\r
+               int v=work[i];\r
+               if(hi<v){\r
+                   hi=v;\r
+               }\r
+               if(low>v){\r
+                   low=v;\r
+               }\r
+               sum2+=v;\r
+           }\r
+           ave+=sum2;\r
+       }\r
+       \r
+       return (((hi-low)/10*8)+low)>>2;\r
+    } \r
+}\r
+\r
+\r
+/**\r
+ * byte[] RGB24/BGR24等、画素並びは問わない\r
+ *\r
+ */\r
+class NyARRasterReader_RgbMul_BYTE_C8C8C8 extends NyARRasterReader_RgbMul_BaseClass\r
+{\r
+    public NyARRasterReader_RgbMul_BYTE_C8C8C8(NyARRaster i_raster) throws NyARException\r
+    {\r
+       this._raster=i_raster;\r
+       this._size=i_raster.getSize();\r
+    }\r
+    public void readRow(int i_row,int[] o_line)\r
+    {\r
+       final byte[] buf=(byte[])this._raster.getBufferObject();\r
+        int bp=(i_row+1)*this._size.w*3-3;\r
+        for(int i=this._size.w-1;i>=0;i--){\r
+            o_line[i]=((buf[bp] & 0xff)*(buf[bp+1] & 0xff)*(buf[bp+2] & 0xff))>>16;\r
+           bp-=3;\r
+       }\r
+    }\r
+}\r
+\r
+/**\r
+ * byte[] RGBX/BGRX等、先頭24bitの画素並びは問わない\r
+ *\r
+ */\r
+class NyARRasterReader_RgbMul_BYTE_C8C8C8X8 extends NyARRasterReader_RgbMul_BaseClass\r
+{\r
+    public NyARRasterReader_RgbMul_BYTE_C8C8C8X8(NyARRaster i_raster) throws NyARException\r
+    {\r
+       this._raster=i_raster;\r
+       this._size=i_raster.getSize();\r
+    }\r
+    public void readRow(int i_row,int[] o_line)\r
+    {\r
+       final byte[] buf=(byte[])this._raster.getBufferObject();\r
+        int bp=(i_row+1)*this._size.w*4-4;\r
+        for(int i=this._size.w-1;i>=0;i--){\r
+           o_line[i]=((buf[bp] & 0xff)*(buf[bp+1] & 0xff)*(buf[bp+2] & 0xff))>>16;\r
+           bp-=4;\r
+       }\r
+    }    \r
+}\r
+\r
+/**\r
+ * ゼロ配列\r
+ *\r
+ */\r
+class NyARRasterReader_RgbMul_NULL_ALLZERO extends NyARRasterReader_RgbMul_BaseClass\r
+{\r
+    public NyARRasterReader_RgbMul_NULL_ALLZERO(NyARRaster i_raster) throws NyARException\r
+    {\r
+       this._size=i_raster.getSize();\r
+    }\r
+    public void readRow(int i_row,int[] o_line)\r
+    {\r
+        for(int i=this._size.w-1;i>=0;i--){\r
+           o_line[i]=0;\r
+       }\r
+    }    \r
+}
\ No newline at end of file
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/NyARRasterReaderFactory_RgbTotal.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/NyARRasterReaderFactory_RgbTotal.java
new file mode 100644 (file)
index 0000000..864ac11
--- /dev/null
@@ -0,0 +1,143 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.operator;\r
+\r
+import jp.nyatla.nyartoolkit.core.raster.*;\r
+import jp.nyatla.nyartoolkit.core.types.*;\r
+import jp.nyatla.nyartoolkit.*;\r
+\r
+public final class NyARRasterReaderFactory_RgbTotal implements INyARRasterReaderFactory{\r
+    public INyARRasterReader createReader(NyARRaster i_raster) throws NyARException\r
+    {\r
+       switch(i_raster.getBufferType()){\r
+       case NyARRaster.BUFFERFORMAT_BYTE_B8G8R8X8_32:\r
+           return new NyARRasterReader_RgbTotal_BYTE_C8C8C8X8(i_raster);\r
+       case NyARRaster.BUFFERFORMAT_BYTE_B8G8R8_24:\r
+       case NyARRaster.BUFFERFORMAT_BYTE_R8G8B8_24:\r
+           return new NyARRasterReader_RgbTotal_BYTE_C8C8C8(i_raster);\r
+       case NyARRaster.BUFFERFORMAT_NULL_ALLZERO:\r
+           return new NyARRasterReader_RgbTotal_NULL_ALLZERO(i_raster);\r
+       default:\r
+           throw new NyARException();\r
+       }\r
+    }\r
+}\r
+\r
+abstract class NyARRasterReader_RgbTotal_BaseClass implements INyARRasterReader\r
+{\r
+    protected NyARRaster _raster;\r
+    protected TNyARIntSize _size;    \r
+    public final TNyARIntSize getRasterSize()\r
+    {\r
+       return this._size;\r
+    }\r
+    public final int getThreshold()\r
+    {\r
+       int[] work=new int[this._size.w];\r
+       int hi=0;int low=256*3;\r
+       for(int i2=0;i2<8;i2++){            \r
+           this.readRow(this._size.h*i2/8,work);\r
+           for(int i=0;i<this._size.w;i++){\r
+               if(hi<work[i]){\r
+                   hi=work[i];\r
+               }\r
+               if(low>work[i]){\r
+                   low=work[i];\r
+               }\r
+           }\r
+       }\r
+       return (hi-low)/3+low;\r
+    }    \r
+}\r
+\r
+\r
+/**\r
+ * byte[] RGB24/BGR24等、画素並びは問わない\r
+ *\r
+ */\r
+ class NyARRasterReader_RgbTotal_BYTE_C8C8C8 extends NyARRasterReader_RgbTotal_BaseClass\r
+ {\r
+     public NyARRasterReader_RgbTotal_BYTE_C8C8C8(NyARRaster i_raster) throws NyARException\r
+     {\r
+        this._raster=i_raster;\r
+        this._size=i_raster.getSize();\r
+     }\r
+     public void readRow(int i_row,int[] o_line)\r
+     {\r
+        final byte[] buf=(byte[])this._raster.getBufferObject();\r
+        int bp=(i_row+1)*this._size.w*3-3;\r
+        for(int i=this._size.w-1;i>=0;i--){\r
+            o_line[i]=((buf[bp] & 0xff)+(buf[bp+1] & 0xff)+(buf[bp+2] & 0xff))/3;\r
+            bp-=3;\r
+        }\r
+     }\r
+ }\r
+\r
+ /**\r
+  * byte[] RGBX/BGRX等、先頭24bitの画素並びは問わない\r
+  *\r
+  */\r
+ class NyARRasterReader_RgbTotal_BYTE_C8C8C8X8 extends NyARRasterReader_RgbTotal_BaseClass\r
+ {\r
+     public NyARRasterReader_RgbTotal_BYTE_C8C8C8X8(NyARRaster i_raster) throws NyARException\r
+     {\r
+        this._raster=i_raster;\r
+        this._size=i_raster.getSize();\r
+     }\r
+     public void readRow(int i_row,int[] o_line)\r
+     {\r
+        final byte[] buf=(byte[])this._raster.getBufferObject();\r
+        int bp=(i_row+1)*this._size.w*4-4;\r
+        for(int i=this._size.w-1;i>=0;i--){\r
+            o_line[i]=((buf[bp] & 0xff)+(buf[bp+1] & 0xff)+(buf[bp+2] & 0xff))/3;\r
+            bp-=4;\r
+        }\r
+     }    \r
+ }\r
+\r
+ /**\r
+  * ゼロ配列\r
+  *\r
+  */\r
+ class NyARRasterReader_RgbTotal_NULL_ALLZERO extends NyARRasterReader_RgbTotal_BaseClass\r
+ {\r
+     public NyARRasterReader_RgbTotal_NULL_ALLZERO(NyARRaster i_raster) throws NyARException\r
+     {\r
+        this._size=i_raster.getSize();\r
+     }\r
+     public void readRow(int i_row,int[] o_line)\r
+     {\r
+        for(int i=this._size.w-1;i>=0;i--){\r
+            o_line[i]=0;\r
+        }\r
+     }    \r
+ }
\ No newline at end of file
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/NyARRasterReaderFactory_Test.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/operator/NyARRasterReaderFactory_Test.java
new file mode 100644 (file)
index 0000000..85dd125
--- /dev/null
@@ -0,0 +1,128 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.operator;\r
+\r
+import jp.nyatla.nyartoolkit.core.raster.*;\r
+import jp.nyatla.nyartoolkit.core.types.*;\r
+import jp.nyatla.nyartoolkit.*;\r
+\r
+public final class NyARRasterReaderFactory_Test implements INyARRasterReaderFactory{\r
+    public INyARRasterReader createReader(NyARRaster i_raster) throws NyARException\r
+    {\r
+       switch(i_raster.getBufferType()){\r
+//     case NyARRaster.BUFFERFORMAT_BYTE_B8G8R8X8_32:\r
+//         return new NyARRasterReader_RgbMul_BYTE_C8C8C8X8(i_raster);\r
+       case NyARRaster.BUFFERFORMAT_BYTE_B8G8R8_24:\r
+       case NyARRaster.BUFFERFORMAT_BYTE_R8G8B8_24:\r
+           return new NyARRasterReader_RgbTest_BYTE_C8C8C8(i_raster);\r
+//     case NyARRaster.BUFFERFORMAT_NULL_ALLZERO:\r
+//         return new NyARRasterReader_RgbMul_NULL_ALLZERO(i_raster);\r
+       default:\r
+           throw new NyARException();\r
+       }\r
+    }\r
+}\r
+\r
+abstract class NyARRasterReader_RgbTest_BaseClass implements INyARRasterReader\r
+{\r
+    protected NyARRaster _raster;\r
+    protected TNyARIntSize _size;    \r
+    public final TNyARIntSize getRasterSize()\r
+    {\r
+       return this._size;\r
+    }\r
+    public final int getThreshold()\r
+    {\r
+       int[] work=new int[this._size.w];\r
+       int hi=0;int low=16581375;\r
+       int ave,sum2;\r
+       ave=0;\r
+       for(int i2=0;i2<8;i2++){            \r
+           this.readRow(this._size.h*i2/8,work);\r
+           sum2=0;\r
+           for(int i=0;i<this._size.w;i++){\r
+               int v=work[i];\r
+               if(hi<v){\r
+                   hi=v;\r
+               }\r
+               if(low>v){\r
+                   low=v;\r
+               }\r
+               sum2+=v;\r
+           }\r
+           ave+=sum2;\r
+       }\r
+       \r
+       return (((hi-low)/10*8)+low)>>2;\r
+    } \r
+}\r
+\r
+\r
+/**\r
+ * byte[] RGB24/BGR24等、画素並びは問わない\r
+ *\r
+ */\r
+class NyARRasterReader_RgbTest_BYTE_C8C8C8 extends NyARRasterReader_RgbMul_BaseClass\r
+{\r
+    public NyARRasterReader_RgbTest_BYTE_C8C8C8(NyARRaster i_raster) throws NyARException\r
+    {\r
+       this._raster=i_raster;\r
+       this._size=i_raster.getSize();\r
+    }\r
+    public void readRow(int i_row,int[] o_line)\r
+    {\r
+       final byte[] buf=(byte[])this._raster.getBufferObject();\r
+        int bp=(i_row)*this._size.w*3;\r
+        int w;\r
+        int prev=255;\r
+        int ave=0;\r
+        o_line[0]=0;\r
+        for(int i=1;i<this._size.w-1;i++){            \r
+            w=((buf[bp] & 0xff)*(buf[bp+1] & 0xff)*(buf[bp+2] & 0xff))>>16;\r
+//            if(w>prev && (w>ave+16)){\r
+//             ave=w;\r
+               o_line[i]=Math.abs(w-ave);\r
+//            }else if(w<prev && (ave-16>w)){\r
+               ave=w;\r
+//             o_line[i]=w;            \r
+//            }else{\r
+               ave=(w+ave)/2;\r
+//             o_line[i]=o_line[i-1];          \r
+//            }\r
+            prev=w;\r
+           bp+=3;\r
+       }\r
+    }\r
+\r
+\r
+  \r
+}
\ No newline at end of file
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/threshold/INyARRasterThresholdDetector.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/threshold/INyARRasterThresholdDetector.java
new file mode 100644 (file)
index 0000000..ec4f0d2
--- /dev/null
@@ -0,0 +1,42 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.threshold;\r
+\r
+import jp.nyatla.nyartoolkit.*;\r
+import jp.nyatla.nyartoolkit.core.raster.*;\r
+\r
+public interface INyARRasterThresholdDetector\r
+{\r
+    public void analyzeRaster(NyARRaster i_input) throws NyARException;\r
+    public int getThreshold();\r
+    public int getThreshold(int i_x,int i_y);\r
+}\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/threshold/NyARRasterThresholdDetector_PTile.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/threshold/NyARRasterThresholdDetector_PTile.java
new file mode 100644 (file)
index 0000000..9f7d9d3
--- /dev/null
@@ -0,0 +1,161 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.threshold;\r
+\r
+import jp.nyatla.nyartoolkit.core.raster.*;\r
+import jp.nyatla.nyartoolkit.*;\r
+import jp.nyatla.nyartoolkit.core.types.*;\r
+/**\r
+ * Pタイル法による閾値検出\r
+ *\r
+ */\r
+public class NyARRasterThresholdDetector_PTile implements INyARRasterThresholdDetector\r
+{\r
+    private int _persentage;\r
+    private int _threshold;\r
+    /**\r
+     * @param i_persentage\r
+     * -100<=0<=100であること。\r
+     * 正の場合、黒点を基準にします。\r
+     * 負の場合、白点を基準にします。\r
+     * (CMOSカメラの場合、基準点は白点の方が良い)\r
+     */\r
+    public NyARRasterThresholdDetector_PTile(int i_persentage)\r
+    {\r
+       assert(-100<=i_persentage && i_persentage<=100);\r
+       this._persentage=i_persentage;\r
+    }\r
+    private int createHistgram(NyARRaster i_input,int[] o_histgram) throws NyARException\r
+    {\r
+       int[][] in_buf=(int[][])i_input.getBufferObject();\r
+       int[] histgram=o_histgram;\r
+       TNyARIntSize size=i_input.getSize();\r
+       \r
+       //ヒストグラムを作成\r
+       for(int i=0;i<256;i++){\r
+           histgram[i]=0;\r
+       }\r
+       int sum=0;\r
+       for(int y=0;y<size.h;y++){\r
+           int sum2=0;\r
+            for(int x=0;x<size.w;x++){\r
+               int v=in_buf[y][x];\r
+               histgram[v]++;\r
+               sum2+=v;\r
+            }\r
+            sum=sum+sum2/size.w;\r
+       }\r
+       //閾値ピクセル数確定\r
+       int th_pixcels=size.w*size.h*this._persentage/100;\r
+       \r
+       //閾値判定\r
+       int i;\r
+       if(th_pixcels>0){\r
+           //黒点基準\r
+           for(i=0;i<254;i++){\r
+               th_pixcels-=histgram[i];\r
+               if(th_pixcels<=0){\r
+                   break;\r
+               }\r
+           }\r
+       }else{\r
+           //白点基準\r
+           for(i=255;i>1;i--){\r
+               th_pixcels+=histgram[i];\r
+               if(th_pixcels>=0){\r
+                   break;\r
+               }\r
+           }\r
+       }\r
+       //閾値の保存\r
+       return i;\r
+    }\r
+    \r
+    public void analyzeRaster(NyARRaster i_input) throws NyARException\r
+    {\r
+       assert(i_input.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       int[] histgram=new int[256];\r
+       this._threshold=createHistgram(i_input,histgram);\r
+    }\r
+    /**\r
+     * ヒストグラムをラスタに書き出す。\r
+     * @param i_output\r
+     */\r
+    public void debugDrawHistgramMap(NyARRaster i_input,NyARRaster i_output) throws NyARException\r
+    {\r
+       assert(i_input.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       assert(i_output.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       TNyARIntSize size=i_output.getSize();\r
+       \r
+       int[][] out_buf=(int[][])i_output.getBufferObject();\r
+       //0で塗りつぶし\r
+       for(int y=0;y<size.h;y++){\r
+            for(int x=0;x<size.w;x++){\r
+               out_buf[y][x]=0;\r
+            }\r
+       }\r
+       //ヒストグラムを計算\r
+       int[] histgram=new int[256];\r
+       int threshold=createHistgram(i_input,histgram);\r
+\r
+       //ヒストグラムの最大値を出す\r
+       int max_v=0;\r
+       for(int i=0;i<255;i++){\r
+           if(max_v<histgram[i]){\r
+               max_v=histgram[i];\r
+           }\r
+       }\r
+       //目盛り\r
+       for(int i=0;i<size.h;i++){\r
+           out_buf[i][0]=128;\r
+           out_buf[i][128]=128;\r
+           out_buf[i][255]=128;\r
+       }       \r
+       //スケーリングしながら描画\r
+       for(int i=0;i<255;i++){\r
+           out_buf[histgram[i]*(size.h-1)/max_v][i]=255;\r
+       }\r
+       //値\r
+       for(int i=0;i<size.h;i++){\r
+           out_buf[i][threshold]=255;\r
+       }\r
+       return;\r
+    }\r
+    public int getThreshold()\r
+    {\r
+       return this._threshold;\r
+    }\r
+    public int getThreshold(int i_x,int i_y)\r
+    {\r
+       return this._threshold;\r
+    }\r
+}\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/threshold/NyARRasterThresholdDetector_SlidePTile.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/raster/threshold/NyARRasterThresholdDetector_SlidePTile.java
new file mode 100644 (file)
index 0000000..2005560
--- /dev/null
@@ -0,0 +1,169 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.raster.threshold;\r
+\r
+import jp.nyatla.nyartoolkit.core.raster.*;\r
+import jp.nyatla.nyartoolkit.*;\r
+import jp.nyatla.nyartoolkit.core.types.*;\r
+/**\r
+ * 明点と暗点をPタイル法で検出して、その中央値を閾値とする。\r
+ * \r
+ *\r
+ */\r
+public class NyARRasterThresholdDetector_SlidePTile implements INyARRasterThresholdDetector\r
+{\r
+    private int _persentage;\r
+    private int _threshold;\r
+    \r
+    /**\r
+     * @param i_persentage\r
+     * 0<=50であること。白/黒マーカーの場合は10~20を推奨\r
+     * 正の場合、黒点を基準にします。\r
+     * 負の場合、白点を基準にします。\r
+     * (CMOSカメラの場合、基準点は白点の方が良い)\r
+     */\r
+    public NyARRasterThresholdDetector_SlidePTile(int i_persentage)\r
+    {\r
+       assert(0<=i_persentage && i_persentage<=50);\r
+       this._persentage=i_persentage;\r
+    }\r
+    private int createHistgram(NyARRaster i_input,int[] o_histgram) throws NyARException\r
+    {\r
+       int[][] in_buf=(int[][])i_input.getBufferObject();\r
+       int[] histgram=o_histgram;\r
+       TNyARIntSize size=i_input.getSize();\r
+       \r
+       //ヒストグラムを作成\r
+       for(int i=0;i<256;i++){\r
+           histgram[i]=0;\r
+       }\r
+       int sum=0;\r
+       for(int y=0;y<size.h;y++){\r
+           int sum2=0;\r
+            for(int x=0;x<size.w;x++){\r
+               int v=in_buf[y][x];\r
+               histgram[v]++;\r
+               sum2+=v;\r
+            }\r
+            sum=sum+sum2/size.w;\r
+       }\r
+       //閾値ピクセル数確定\r
+       int th_pixcels=size.w*size.h*this._persentage/100;\r
+       int th_wk;\r
+       int th_w,th_b;\r
+\r
+        //黒点基準\r
+       th_wk=th_pixcels;\r
+        for(th_b=0;th_b<254;th_b++){\r
+            th_wk-=histgram[th_b];\r
+            if(th_wk<=0){\r
+                break;\r
+            }\r
+        }\r
+        //白点基準\r
+       th_wk=th_pixcels;\r
+        for(th_w=255;th_w>1;th_w--){\r
+            th_wk-=histgram[th_w];\r
+            if(th_wk<=0){\r
+                break;\r
+            }\r
+        }\r
+       //閾値の保存\r
+       return (th_w+th_b)/2;\r
+    }\r
+    \r
+    public void analyzeRaster(NyARRaster i_input) throws NyARException\r
+    {\r
+       assert(i_input.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       int[] histgram=new int[256];\r
+       //閾値の基準値を出す。\r
+       int th=createHistgram(i_input,histgram);\r
+       this._threshold=th;\r
+       \r
+       \r
+    }\r
+    /**\r
+     * ヒストグラムをラスタに書き出す。\r
+     * @param i_output\r
+     */\r
+    public void debugDrawHistgramMap(NyARRaster i_input,NyARRaster i_output) throws NyARException\r
+    {\r
+       assert(i_input.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       assert(i_output.getBufferType()==NyARRaster.BUFFERFORMAT_INT2D);\r
+       TNyARIntSize size=i_output.getSize();\r
+       \r
+       int[][] out_buf=(int[][])i_output.getBufferObject();\r
+       //0で塗りつぶし\r
+       for(int y=0;y<size.h;y++){\r
+            for(int x=0;x<size.w;x++){\r
+               out_buf[y][x]=0;\r
+            }\r
+       }\r
+       //ヒストグラムを計算\r
+       int[] histgram=new int[256];\r
+       int threshold=createHistgram(i_input,histgram);\r
+       for(int i=255;i>0;i--){\r
+           histgram[i]=Math.abs(histgram[i]);\r
+       }\r
+\r
+       //ヒストグラムの最大値を出す\r
+       int max_v=0;\r
+       for(int i=0;i<255;i++){\r
+           if(max_v<histgram[i]){\r
+               max_v=histgram[i];\r
+           }\r
+       }\r
+       //目盛り\r
+       for(int i=0;i<size.h;i++){\r
+           out_buf[i][0]=128;\r
+           out_buf[i][128]=128;\r
+           out_buf[i][255]=128;\r
+       }       \r
+       //スケーリングしながら描画\r
+       for(int i=0;i<255;i++){\r
+            out_buf[histgram[i]*(size.h-1)/max_v][i]=255;\r
+       }\r
+       //値\r
+       for(int i=0;i<size.h;i++){\r
+           out_buf[i][threshold]=255;\r
+       }\r
+       return;\r
+    }\r
+    public int getThreshold()\r
+    {\r
+       return this._threshold;\r
+    }\r
+    public int getThreshold(int i_x,int i_y)\r
+    {\r
+       return this._threshold;\r
+    }\r
+}\r
index 1ead006..cf5b2c0 100644 (file)
@@ -1,3 +1,34 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ *   Hirokazu Kato\r
+ *   Mark Billinghurst\r
+ *   HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
 package jp.nyatla.nyartoolkit.core.transmat;\r
 \r
 import jp.nyatla.nyartoolkit.NyARException;\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/types/NyARSquare.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/types/NyARSquare.java
new file mode 100644 (file)
index 0000000..02a4b00
--- /dev/null
@@ -0,0 +1,8 @@
+package jp.nyatla.nyartoolkit.core.types;\r
+\r
+public class NyARSquare\r
+{\r
+    public TNyARIntLine[] line=new TNyARIntLine[4];\r
+    public TNyARIntPoint[] vertex=new TNyARIntPoint[4];\r
+\r
+}\r
diff --git a/branches/nyatla/src/jp/nyatla/nyartoolkit/core/types/NySquare.java b/branches/nyatla/src/jp/nyatla/nyartoolkit/core/types/NySquare.java
deleted file mode 100644 (file)
index 49d18a0..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-package jp.nyatla.nyartoolkit.core.types;\r
-\r
-public class NySquare\r
-{\r
-    public TNyIntLine[] line=new TNyIntLine[4];\r
-    public TNyIntPoint[] vertex=new TNyIntPoint[4];\r
-\r
-}\r
@@ -5,7 +5,7 @@ package jp.nyatla.nyartoolkit.core.types;
  * @author nyatla\r
  *\r
  */\r
-public class TNyIntLine\r
+public class TNyARIntLine\r
 {\r
     public int x;\r
     public int y;\r
@@ -2,7 +2,7 @@ package jp.nyatla.nyartoolkit.core.types;
 \r
 import jp.nyatla.nyartoolkit.NyARException;\r
 \r
-public class TNyIntSize\r
+public class TNyARIntSize\r
 {\r
     public int h;\r
     public int w;\r
@@ -28,7 +28,7 @@ public class TNyIntSize
      * @return\r
      * @throws NyARException\r
      */    \r
-    public boolean isEqualSize(TNyIntSize i_size)\r
+    public boolean isEqualSize(TNyARIntSize i_size)\r
     {\r
        if(i_size.w==this.w && i_size.h==this.h)\r
        {\r
index 6063ca4..a83f8a4 100644 (file)
  */\r
 package jp.nyatla.nyartoolkit.detector;\r
 \r
-import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.*;\r
 import jp.nyatla.nyartoolkit.core.*;\r
-import jp.nyatla.nyartoolkit.core.match.NyARMatchPatt_Color_WITHOUT_PCA;\r
-import jp.nyatla.nyartoolkit.core.pickup.INyColorPatt;\r
-import jp.nyatla.nyartoolkit.core.pickup.NyARColorPatt_O3;\r
+import jp.nyatla.nyartoolkit.core.match.*;\r
+import jp.nyatla.nyartoolkit.core.pickup.*;\r
 import jp.nyatla.nyartoolkit.core.raster.*;\r
-import jp.nyatla.nyartoolkit.core.transmat.INyARTransMat;\r
-import jp.nyatla.nyartoolkit.core.transmat.NyARTransMatResult;\r
-import jp.nyatla.nyartoolkit.core.transmat.NyARTransMat_O2;\r
-\r
+import jp.nyatla.nyartoolkit.core.transmat.*;\r
+import jp.nyatla.nyartoolkit.core.raster.operator.*;\r
 \r
 \r
 class NyARDetectMarkerResult\r
@@ -84,7 +81,7 @@ public class NyARDetectMarker{
     private double[] marker_width;\r
     private int number_of_code;\r
     //検出結果の保存用\r
-    private INyColorPatt patt;\r
+    private INyARColorPatt patt;\r
     \r
     private NyARDetectMarkerResultHolder result_holder=new NyARDetectMarkerResultHolder();\r
     \r
@@ -128,6 +125,7 @@ public class NyARDetectMarker{
        //評価器を作る。\r
        this.match_patt=new NyARMatchPatt_Color_WITHOUT_PCA();  \r
     }\r
+    NyARRasterReaderFactory_RgbTotal _reader_factory=new NyARRasterReaderFactory_RgbTotal();\r
     /**\r
      * i_imageにマーカー検出処理を実行し、結果を記録します。\r
      * @param i_image\r
@@ -140,11 +138,11 @@ public class NyARDetectMarker{
      * マーカーが見つからない場合は0を返します。\r
      * @throws NyARException\r
      */\r
-    public int detectMarkerLite(INyARRaster i_image,int i_thresh) throws NyARException\r
+    public int detectMarkerLite(NyARRaster i_image,int i_thresh) throws NyARException\r
     {\r
        NyARSquareList l_square_list=this.square_list;\r
        //スクエアコードを探す\r
-       square.detectSquare(i_image,i_thresh,l_square_list);\r
+       square.detectSquare(this._reader_factory.createReader(i_image),i_thresh,l_square_list);\r
        \r
        final int number_of_square=l_square_list.getCount();\r
        //コードは見つかった?\r
index 2c2c858..8127efa 100644 (file)
@@ -33,13 +33,12 @@ package jp.nyatla.nyartoolkit.detector;
 \r
 import jp.nyatla.nyartoolkit.NyARException;\r
 import jp.nyatla.nyartoolkit.core.*;\r
-import jp.nyatla.nyartoolkit.core.match.NyARMatchPatt_Color_WITHOUT_PCA;\r
-import jp.nyatla.nyartoolkit.core.pickup.INyColorPatt;\r
-import jp.nyatla.nyartoolkit.core.pickup.NyARColorPatt_O3;\r
+import jp.nyatla.nyartoolkit.core.match.*;\r
+import jp.nyatla.nyartoolkit.core.pickup.*;\r
 import jp.nyatla.nyartoolkit.core.raster.*;\r
-import jp.nyatla.nyartoolkit.core.transmat.INyARTransMat;\r
-import jp.nyatla.nyartoolkit.core.transmat.NyARTransMatResult;\r
-import jp.nyatla.nyartoolkit.core.transmat.NyARTransMat_O2;\r
+import jp.nyatla.nyartoolkit.core.raster.operator.*;\r
+import jp.nyatla.nyartoolkit.core.transmat.*;\r
+\r
 /**\r
  * 画像からARCodeに最も一致するマーカーを1個検出し、その変換行列を計算するクラスです。\r
  *\r
@@ -57,7 +56,7 @@ public class NyARSingleDetectMarker{
     private int detected_direction;\r
     private double detected_confidence;\r
     private NyARSquare detected_square;\r
-    private INyColorPatt patt;\r
+    private INyARColorPatt patt;\r
     /**\r
      * 検出するARCodeとカメラパラメータから、1個のARCodeを検出するNyARSingleDetectMarkerインスタンスを作ります。\r
      * @param i_param\r
@@ -81,6 +80,8 @@ public class NyARSingleDetectMarker{
        //評価器を作る。\r
        this.match_patt=new NyARMatchPatt_Color_WITHOUT_PCA();  \r
     }\r
+//    INyARRasterReaderFactory _reader_factory=new NyARRasterReaderFactory_RgbTotal();\r
+    INyARRasterReaderFactory _reader_factory=new NyARRasterReaderFactory_RgbMul();\r
     /**\r
      * i_imageにマーカー検出処理を実行し、結果を記録します。\r
      * @param i_image\r
@@ -92,12 +93,12 @@ public class NyARSingleDetectMarker{
      * マーカーが検出できたかを真偽値で返します。\r
      * @throws NyARException\r
      */\r
-    public boolean detectMarkerLite(INyARRaster i_image,int i_thresh) throws NyARException\r
+    public boolean detectMarkerLite(NyARRaster i_image,int i_thresh) throws NyARException\r
     {\r
        detected_square=null;\r
        NyARSquareList l_square_list=this.square_list;\r
        //スクエアコードを探す\r
-       square.detectSquare(i_image, i_thresh,l_square_list);\r
+       square.detectSquare(this._reader_factory.createReader(i_image), i_thresh,l_square_list);\r
        \r
        int number_of_square=l_square_list.getCount();\r
        //コードは見つかった?\r
diff --git a/branches/nyatla/test/jp/nyatla/nyartoolkit/dev/LabelingCamera.java b/branches/nyatla/test/jp/nyatla/nyartoolkit/dev/LabelingCamera.java
new file mode 100644 (file)
index 0000000..4622e3d
--- /dev/null
@@ -0,0 +1,137 @@
+/**
+ * VFM+ARToolkitテストプログラム
+ * カメラから取り込んだデータからマーカーを検出して、一致度と変換行列を表示します。
+ * (c)2008 A虎@nyatla.jp
+ * airmail(at)ebony.plala.or.jp
+ * http://nyatla.jp/
+ */
+package jp.nyatla.nyartoolkit.dev;
+
+import javax.media.*;
+
+import javax.media.util.BufferToImage;
+import javax.media.format.*;
+
+import jp.nyatla.nyartoolkit.NyARException;
+import jp.nyatla.nyartoolkit.jmf.utils.*;
+import jp.nyatla.nyartoolkit.core.raster.threshold.*;
+
+import java.awt.*;
+
+
+import jp.nyatla.nyartoolkit.core.labeling.*;
+import jp.nyatla.nyartoolkit.core.labeling.processor.*;
+import jp.nyatla.nyartoolkit.core.raster.operator.*;
+import jp.nyatla.nyartoolkit.core.raster.*;
+import jp.nyatla.nyartoolkit.core.raster.filter.*;
+import jp.nyatla.util.j2se.LabelingBufferdImage;
+
+public class LabelingCamera extends Frame implements JmfCaptureListener {
+    private JmfNyARRaster_RGB _raster;
+    private JmfCameraCapture capture;
+
+
+    public LabelingCamera() throws NyARException, NyARException
+    {
+       setBounds(0, 0, 640 + 64, 720 + 64);
+       // キャプチャの準備
+       capture = new JmfCameraCapture(320, 240, 30f,
+               JmfCameraCapture.PIXEL_FORMAT_RGB);
+       capture.setCaptureListener(this);
+
+       // キャプチャイメージ用のラスタを準備
+       this._raster = new JmfNyARRaster_RGB(320, 240);
+    }
+    
+    private NyARRaster _workraster=new NyARRaster_Int2d(320,240);
+    private NyARRaster _workraster2=new NyARRaster_Int2d(320,240);
+    private NyARLabelingImage _limage=new NyARLabelingImage(320, 240);
+    private LabelingBufferdImage _bimg=new LabelingBufferdImage(320, 240,LabelingBufferdImage.COLOR_256_MONO);
+    private LabelingBufferdImage _bimg2=new LabelingBufferdImage(320, 240,LabelingBufferdImage.COLOR_256_MONO);
+    private INyARRasterReaderFactory _factory2=new NyARRasterReaderFactory_Test();
+    private INyARRasterReaderFactory _factory1=new NyARRasterReaderFactory_RgbTotal();
+
+    public void onUpdateBuffer(Buffer i_buffer)
+    {
+       try {
+           // キャプチャしたバッファをラスタにセット
+           _raster.setBuffer(i_buffer);
+           INyARRasterFilter filter;
+           
+           Graphics g = getGraphics();
+           //キャプチャ画像
+           BufferToImage b2i = new BufferToImage((VideoFormat) i_buffer.getFormat());
+           Image img = b2i.createImage(i_buffer);
+           this.getGraphics().drawImage(img, 32, 32, this);
+           
+           //画像1
+           filter=new NyARRasterFilter_RgbSum();
+           filter.doFilter(_raster, _workraster);
+           this._bimg2.setImage(this._workraster);
+           this.getGraphics().drawImage(this._bimg2, 32+320, 32,320+320+32,240+32,0,240,320,0, this);
+
+           //画像2
+           NyARRasterThresholdDetector_PTile threshold=new NyARRasterThresholdDetector_PTile(50);
+           threshold.analyzeRaster(_workraster);
+           filter=new NyARRasterFilter_Threshold(128);
+           filter.doFilter(_workraster, _workraster2);
+           this._bimg.setImage(this._workraster2);
+           this.getGraphics().drawImage(this._bimg, 32, 32+240,320+32,240+32+240,0,240,320,0, this);
+           //画像3
+           //threshold.debugDrawHistgramMap(_workraster, _workraster2);
+           //this._bimg2.setImage(this._workraster2);
+           //this.getGraphics().drawImage(this._bimg2, 32+320, 32+240,320+32+320,240+32+240,0,240,320,0, this);
+
+           //画像4
+           NyARRasterThresholdDetector_SlidePTile threshold2=new NyARRasterThresholdDetector_SlidePTile(20);
+           threshold2.analyzeRaster(_workraster);
+           filter=new NyARRasterFilter_Threshold(threshold2.getThreshold());
+           filter.doFilter(_workraster, _workraster2);
+           this._bimg.setImage(this._workraster2);
+           this.getGraphics().drawImage(this._bimg, 32, 32+480,320+32,480+32+240,0,240,320,0, this);
+           //画像5
+           threshold2.debugDrawHistgramMap(_workraster, _workraster2);
+           this._bimg2.setImage(this._workraster2);
+           this.getGraphics().drawImage(this._bimg2, 32+320, 32+480,320+32+320,480+32+240,0,240,320,0, this);
+           
+           
+           //      this.getGraphics().drawImage(this._bimg, 32, 32, this);
+
+
+       } catch (Exception e) {
+           e.printStackTrace();
+       }
+
+    }
+    private INyARLabeling labelingFactory(int i_idx)
+    {
+       switch(i_idx){
+       case 0:{ARToolKitLabeling l=new ARToolKitLabeling();l.setThresh(4);return l;}
+       case 1:{return new NyLineLabeling();}
+       }
+       return null;
+       
+       
+    }
+
+    private void startCapture()
+    {
+       try {
+           capture.start();
+       } catch (Exception e) {
+           e.printStackTrace();
+       }
+    }
+
+    public static void main(String[] args) {
+       try {
+           LabelingCamera mainwin = new LabelingCamera();
+           mainwin.setVisible(true);
+           mainwin.startCapture();
+       } catch (Exception e) {
+           e.printStackTrace();
+       }
+
+    }
+
+}
diff --git a/branches/nyatla/test/jp/nyatla/nyartoolkit/dev/LabelingTest.java b/branches/nyatla/test/jp/nyatla/nyartoolkit/dev/LabelingTest.java
new file mode 100644 (file)
index 0000000..50d5a7e
--- /dev/null
@@ -0,0 +1,44 @@
+package jp.nyatla.nyartoolkit.dev;\r
+\r
+import java.awt.Frame;\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+\r
+import jp.nyatla.nyartoolkit.core.raster.*;\r
+import jp.nyatla.nyartoolkit.core.raster.operator.*;\r
+import jp.nyatla.nyartoolkit.core.labeling.processor.*;\r
+import jp.nyatla.nyartoolkit.core.labeling.*;\r
+import jp.nyatla.util.j2se.*;\r
+\r
+public class LabelingTest extends Frame\r
+{\r
+    private final String data_file  ="../Data/320x240ABGR.raw";\r
+    public void drawImage() throws Exception\r
+    {\r
+       File f=new File(data_file);\r
+       FileInputStream fs=new FileInputStream(data_file);\r
+       byte[] buf=new byte[(int)f.length()];\r
+       fs.read(buf);\r
+       NyARRaster_BGRA ra=NyARRaster_BGRA.wrap(buf, 320, 240);\r
+       NyARLabelingImage limage=new NyARLabelingImage(320,240);\r
+       INyARLabeling labeling=new ARToolKitLabeling();\r
+//     INyARLabeling labeling=new NyLineLabeling();\r
+       INyARRasterReaderFactory rf=new NyARRasterReaderFactory_RgbTotal();\r
+       labeling.attachDestination(limage);\r
+       labeling.labeling(rf.createReader(ra));\r
+       LabelingBufferdImage img=new LabelingBufferdImage(320,240,LabelingBufferdImage.COLOR_125_COLOR);\r
+       img.setLabelingImage(limage);\r
+       this.getGraphics().drawImage(img, 32,32,this);\r
+    }\r
+    public static void main(String[] args)\r
+    {\r
+       try{\r
+           LabelingTest app=new LabelingTest();\r
+           app.setVisible(true);\r
+           app.setBounds(0,0,640,480);\r
+           app.drawImage();\r
+       }catch(Exception e){\r
+           e.printStackTrace();\r
+       }\r
+    }\r
+}\r