OSDN Git Service

git-svn-id: http://svn.sourceforge.jp/svnroot/nyartoolkit/NyARToolkit/trunk@808 7cac0...
[nyartoolkit-and/nyartoolkit-and.git] / lib / src.rpf / jp / nyatla / nyartoolkit / rpf / tracker / nyartk / NyARVectorReader_INT1D_GRAY_8.java
index 1385480..b42b626 100644 (file)
@@ -31,20 +31,19 @@ import jp.nyatla.nyartoolkit.core.types.*;
 \r
 \r
 /**\r
- * グレイスケールラスタに対する、特殊な画素アクセス手段を提供します。\r
- *\r
+ * このクラスは、{@link NyARBufferType#INT1D_GRAY_8}の画素形式に対応した画素ベクトルリーダーです。\r
  */\r
 public class NyARVectorReader_INT1D_GRAY_8 extends NyARVectorReader_Base\r
 {\r
        /**\r
-        * \r
+        * コンストラクタです。\r
+        * 基本GS画像、ヒント画像のセットから、インスタンスを作ります。\r
         * @param i_ref_raster\r
-        * 基本画像\r
+        * 基本GS画像の参照値\r
         * @param i_ref_raster_distortion\r
-        * 歪み解除オブジェクト(nullの場合歪み解除を省略)\r
+        * 基本画像の歪み補正オブジェクトの参照値\r
         * @param i_ref_rob_raster\r
-        * エッジ探索用のROB画像\r
-        * @param \r
+        * ヒント画像の参照値\r
         */\r
        public NyARVectorReader_INT1D_GRAY_8(NyARGrayscaleRaster i_ref_raster,NyARCameraDistortionFactor i_ref_raster_distortion,NyARGrayscaleRaster i_ref_rob_raster)\r
        {\r
@@ -54,71 +53,57 @@ public class NyARVectorReader_INT1D_GRAY_8 extends NyARVectorReader_Base
                this.initInstance(i_ref_raster, i_ref_raster_distortion, i_ref_rob_raster,new NyARContourPickup());\r
        }\r
 \r
+\r
+//     /**\r
+//      * 画素の4近傍の画素ベクトルを取得します。 取得可能な範囲は、Rasterの1ドット内側です。 0 ,-1, 0 0, 0, 0 0 , x,\r
+//      * 0 + -1, y,+1 0 ,+1, 0 0, 0, 0\r
+//      * \r
+//      * @param i_raster\r
+//      * @param x\r
+//      * @param y\r
+//      * @param o_v\r
+//      */\r
+//     public void getPixelVector4(int x, int y, NyARIntPoint2d o_v)\r
+//     {\r
+//             assert ((x > 0) && (y > 0) && (x) < this._ref_base_raster.getWidth() && (y) < this._ref_base_raster.getHeight());\r
+//             int[] buf = (int[])(this._ref_base_raster.getBuffer());\r
+//             int w = this._ref_base_raster.getWidth();\r
+//             int idx = w * y + x;\r
+//             o_v.x = (buf[idx + 1] - buf[idx - 1]) >> 1;\r
+//             o_v.y = (buf[idx + w] - buf[idx - w]) >> 1;\r
+//             //歪み補正どうすんの\r
+//     }\r
+//\r
+//     /**\r
+//      * 画素の8近傍画素ベクトルを取得します。 取得可能な範囲は、Rasterの1ドット内側です。\r
+//      *  -1,-2,-1    -1, 0,+1\r
+//      *   0, y, 0 +  -2, x,+2\r
+//      *  +1,+2,+1     -1, 0,+1\r
+//      * \r
+//      * @param i_raster\r
+//      * @param x\r
+//      * @param y\r
+//      * @param o_v\r
+//      */\r
+//     public void getPixelVector8(int x, int y, NyARIntPoint2d o_v) {\r
+//             assert ((x > 0) && (y > 0) && (x) < this._ref_base_raster.getWidth() && (y) < this._ref_base_raster.getHeight());\r
+//             int[] buf = (int[])this._ref_base_raster.getBuffer();\r
+//             int sw = this._ref_base_raster.getWidth();\r
+//             int idx_0 = sw * y + x;\r
+//             int idx_p1 = idx_0 + sw;\r
+//             int idx_m1 = idx_0 - sw;\r
+//             int b = buf[idx_m1 - 1];\r
+//             int d = buf[idx_m1 + 1];\r
+//             int h = buf[idx_p1 - 1];\r
+//             int f = buf[idx_p1 + 1];\r
+//             o_v.x = ((buf[idx_0 + 1] - buf[idx_0 - 1]) >> 1)\r
+//                             + ((d - b + f - h) >> 2);\r
+//             o_v.y = ((buf[idx_p1] - buf[idx_m1]) >> 1) + ((f - d + h - b) >> 2);\r
+//             //歪み補正どうするの?\r
+//     }\r
+\r
        /**\r
-        * 画素の4近傍の画素ベクトルを取得します。 取得可能な範囲は、Rasterの1ドット内側です。 0 ,-1, 0 0, 0, 0 0 , x,\r
-        * 0 + -1, y,+1 0 ,+1, 0 0, 0, 0\r
-        * \r
-        * @param i_raster\r
-        * @param x\r
-        * @param y\r
-        * @param o_v\r
-        */\r
-/*     未使用につきコメントアウト\r
-       public void getPixelVector4(int x, int y, NyARIntPoint2d o_v)\r
-       {\r
-               assert ((x > 0) && (y > 0) && (x) < this._ref_base_raster.getWidth() && (y) < this._ref_base_raster.getHeight());\r
-               int[] buf = (int[])(this._ref_base_raster.getBuffer());\r
-               int w = this._ref_base_raster.getWidth();\r
-               int idx = w * y + x;\r
-               o_v.x = (buf[idx + 1] - buf[idx - 1]) >> 1;\r
-               o_v.y = (buf[idx + w] - buf[idx - w]) >> 1;\r
-               //歪み補正どうすんの\r
-       }\r
-*/\r
-       /**\r
-        * 画素の8近傍画素ベクトルを取得します。 取得可能な範囲は、Rasterの1ドット内側です。\r
-        *  -1,-2,-1    -1, 0,+1\r
-        *   0, y, 0 +  -2, x,+2\r
-        *  +1,+2,+1     -1, 0,+1\r
-        * \r
-        * @param i_raster\r
-        * @param x\r
-        * @param y\r
-        * @param o_v\r
-        */\r
-/*  未使用につきコメントアウト\r
-       public void getPixelVector8(int x, int y, NyARIntPoint2d o_v) {\r
-               assert ((x > 0) && (y > 0) && (x) < this._ref_base_raster.getWidth() && (y) < this._ref_base_raster.getHeight());\r
-               int[] buf = (int[])this._ref_base_raster.getBuffer();\r
-               int sw = this._ref_base_raster.getWidth();\r
-               int idx_0 = sw * y + x;\r
-               int idx_p1 = idx_0 + sw;\r
-               int idx_m1 = idx_0 - sw;\r
-               int b = buf[idx_m1 - 1];\r
-               int d = buf[idx_m1 + 1];\r
-               int h = buf[idx_p1 - 1];\r
-               int f = buf[idx_p1 + 1];\r
-               o_v.x = ((buf[idx_0 + 1] - buf[idx_0 - 1]) >> 1)\r
-                               + ((d - b + f - h) >> 2);\r
-               o_v.y = ((buf[idx_p1] - buf[idx_m1]) >> 1) + ((f - d + h - b) >> 2);\r
-               //歪み補正どうするの?\r
-       }\r
-*/\r
-       /**\r
-        * RECT範囲内の画素ベクトルの合計値と、ベクトルのエッジ中心を取得します。 320*240の場合、\r
-        * RECTの範囲は(x>=0 && x<319 x+w>=0 && x+w<319),(y>=0 && y<239 x+w>=0 && x+w<319)となります。\r
-        * @param ix\r
-        * ピクセル取得を行う位置を設定します。\r
-        * @param iy\r
-        * ピクセル取得を行う位置を設定します。\r
-        * @param iw\r
-        * ピクセル取得を行う範囲を設定します。\r
-        * @param ih\r
-        * ピクセル取得を行う範囲を設定します。\r
-        * @param o_posvec\r
-        * エッジ中心とベクトルを返します。\r
-        * @return\r
-        * ベクトルの強度を返します。強度値は、差分値の二乗の合計です。\r
+        * この関数は、元画像の矩形領域を集計して、その領域内のエッジ中心と、エッジの方位ベクトルを返します。 画素の集計には、3x3のカーネルを使います。 矩形領域は、例えば取得元の画像が320*240の場合、(x>=0 && x<=320 x+w>=0 && x+w<=320),(y>=0 && y<=240 y+h>=0 && y+h<=240)です。 \r
         */\r
        public final int getAreaVector33(int ix, int iy, int iw, int ih,NyARVecLinear2d o_posvec)\r
        {\r
@@ -183,6 +168,9 @@ public class NyARVectorReader_INT1D_GRAY_8 extends NyARVectorReader_Base
                //加重平均の分母を返却\r
                return sum_wx+sum_wy;\r
        }\r
+       /**\r
+        * この関数は、元画像の矩形領域を集計して、その領域内のエッジ中心と、エッジの方位ベクトルを返します。 画素の集計には、2x2のカーネルを使います。 矩形領域は、例えば取得元の画像が320*240の場合、(x>=0 && x<=320 x+w>=0 && x+w<=320),(y>=0 && y<=240 y+h>=0 && y+h<=240)です。 \r
+        */     \r
        public final int getAreaVector22(int ix, int iy, int iw, int ih,NyARVecLinear2d o_posvec)\r
        {\r
                assert (ih >= 3 && iw >= 3);\r