/**
  *
  * @param i_ref_raster
  * 基本画像
  * @param i_ref_raster_distortion
  * 歪み解除オブジェクト(nullの場合歪み解除を省略)
  * @param i_ref_rob_raster
  * エッジ探索用のROB画像
  * @param
  */
 public NyARVectorReader_INT1D_GRAY_8(NyARGrayscaleRaster i_ref_raster,NyARCameraDistortionFactor i_ref_raster_distortion,NyARGrayscaleRaster i_ref_rob_raster)
     : base()
 {
     Debug.Assert (i_ref_raster.getBufferType() == NyARBufferType.INT1D_GRAY_8);
     Debug.Assert (i_ref_rob_raster.getBufferType() == NyARBufferType.INT1D_GRAY_8);
     this.initInstance(i_ref_raster, i_ref_raster_distortion, i_ref_rob_raster,new NyARContourPickup());
 }
예제 #2
0
        /**
         * arGetLine(int x_coord[], int y_coord[], int coord_num,int vertex[], double line[4][3], double v[4][2]) arGetLine2(int x_coord[], int y_coord[], int
         * coord_num,int vertex[], double line[4][3], double v[4][2], double *dist_factor) の2関数の合成品です。 マーカーのvertex,lineを計算して、結果をo_squareに保管します。
         * Optimize:STEP[424->391]
         *
         * @param i_cparam
         * @return
         * @throws NyARException
         */
        private bool getSquareLine(int[] i_mkvertex, int[] i_xcoord, int[] i_ycoord, NyARSquare o_square)
        {
            NyARLinear[] l_line = o_square.line;
            NyARVec      ev     = this.__getSquareLine_ev;   // matrixPCAの戻り値を受け取る
            NyARVec      mean   = this.__getSquareLine_mean; // matrixPCAの戻り値を受け取る

            double[] mean_array = mean.getArray();
            NyARCameraDistortionFactor dist_factor = this._dist_factor_ref;
            NyARMat input = this.__getSquareLine_input; // 次処理で初期化される。
            NyARMat evec  = this.__getSquareLine_evec;  // アウトパラメータを受け取るから初期化不要//new NyARMat(2,2);

            double[][] evec_array = evec.getArray();
            double     w1;
            int        st, ed, n, i;
            NyARLinear l_line_i, l_line_2;

            for (i = 0; i < 4; i++)
            {
                w1 = (double)(i_mkvertex[i + 1] - i_mkvertex[i] + 1) * 0.05 + 0.5;
                st = (int)(i_mkvertex[i] + w1);
                ed = (int)(i_mkvertex[i + 1] - w1);
                n  = ed - st + 1;
                if (n < 2)
                {
                    // nが2以下でmatrix.PCAを計算することはできないので、エラー
                    return(false);
                }
                // pcaの準備
                input.realloc(n, 2);
                // バッチ取得
                dist_factor.observ2IdealBatch(i_xcoord, i_ycoord, st, n, input.getArray());

                // 主成分分析
                input.matrixPCA(evec, ev, mean);
                l_line_i           = l_line[i];
                l_line_i.run       = evec_array[0][1];                                                // line[i][0] = evec->m[1];
                l_line_i.rise      = -evec_array[0][0];                                               // line[i][1] = -evec->m[0];
                l_line_i.intercept = -(l_line_i.run * mean_array[0] + l_line_i.rise * mean_array[1]); // line[i][2] = -(line[i][0]*mean->v[0] + line[i][1]*mean->v[1]);
            }

            NyARDoublePoint2d[] l_sqvertex = o_square.sqvertex;
            NyARIntPoint[]      l_imvertex = o_square.imvertex;
            for (i = 0; i < 4; i++)
            {
                l_line_i = l_line[i];
                l_line_2 = l_line[(i + 3) % 4];
                w1       = l_line_2.run * l_line_i.rise - l_line_i.run * l_line_2.rise;
                if (w1 == 0.0)
                {
                    return(false);
                }
                l_sqvertex[i].x = (l_line_2.rise * l_line_i.intercept - l_line_i.rise * l_line_2.intercept) / w1;
                l_sqvertex[i].y = (l_line_i.run * l_line_2.intercept - l_line_2.run * l_line_i.intercept) / w1;
                // 頂点インデクスから頂点座標を得て保存
                l_imvertex[i].x = i_xcoord[i_mkvertex[i]];
                l_imvertex[i].y = i_ycoord[i_mkvertex[i]];
            }
            return(true);
        }
 public void copyFrom(NyARCameraDistortionFactor i_ref)
 {
     this._f0 = i_ref._f0;
     this._f1 = i_ref._f1;
     this._f2 = i_ref._f2;
     this._f3 = i_ref._f3;
     return;
 }
 /**
  *
  * @param i_width
  * ラスタのサイズを指定します。
  * @param i_height
  * ラスタのサイズを指定します。
  * @param i_ref_raster_distortion
  * 歪み矯正の為のオブジェクトを指定します。歪み矯正が必要ない時は、NULLを指定します。
  * @param i_depth
  * エッジ画像のサイズを1/(2^n)で指定します。(例:QVGA画像で1を指定すると、エッジ検出画像は160x120になります。)
  * 数値が大きいほど高速になり、検出精度は低下します。実用的なのは、1<=n<=3の範囲です。標準値は2です。
  * @param i_number_of_sample
  * サンプリングするターゲット数を指定します。大体100以上をしておけばOKです。具体的な計算式は、{@link NyARTrackerSource_Reference#NyARTrackerSource_Reference}を参考にして下さい。
  * @param i_raster_type
  * ラスタタイプ
  * @throws NyARException
  */
 public NyARRealitySource_Reference(int i_width,int i_height,NyARCameraDistortionFactor i_ref_raster_distortion,int i_depth,int i_number_of_sample,int i_raster_type)
 {
     this._rgb_source=new NyARRgbRaster(i_width,i_height,i_raster_type);
     this._filter=(INyARRgb2GsFilter) this._rgb_source.createInterface(typeof(INyARRgb2GsFilter));
     this._source_perspective_reader=(INyARPerspectiveCopy)this._rgb_source.createInterface(typeof(INyARPerspectiveCopy));
     this._tracksource=new NyARTrackerSource_Reference(i_number_of_sample,i_ref_raster_distortion,i_width,i_height,i_depth,true);
     return;
 }
 /**
  * コンストラクタです。NyARBufferType.BYTE1D_B8G8R8X8_32形式のRGBラスタを所有するRealitySourceを生成します。
  * @param i_fmt_width
  * @param i_fmt_height
  * 入力フォーマットを指定します。
  * @param i_ref_raster_distortion
  * 歪み矯正の為のオブジェクトを指定します。歪み矯正が必要ない時は、NULLを指定します。
  * @param i_depth
  * エッジ画像のサイズを1/(2^n)で指定します。(例:QVGA画像で1を指定すると、エッジ検出画像は160x120になります。)
  * 数値が大きいほど高速になり、検出精度は低下します。実用的なのは、1<=n<=3の範囲です。標準値は2です。
  * @param i_number_of_sample
  * サンプリングするターゲット数を指定します。大体100以上をしておけばOKです。具体的な計算式は、{@link NyARTrackerSource_Reference#NyARTrackerSource_Reference}を参考にして下さい。
  * @throws NyARException
  */
 public NyARRealitySource_WMCapture(int i_fmt_width, int i_fmt_height, NyARCameraDistortionFactor i_ref_raster_distortion, int i_depth, int i_number_of_sample)
 {
     this._rgb_source = new DsRGB565Raster(i_fmt_width, i_fmt_height);
     this._filter = new NyARRasterFilter_Rgb2Gs_RgbAve192(this._rgb_source.getBufferType());
     this._source_perspective_reader = new NyARPerspectiveRasterReader(_rgb_source.getBufferType());
     this._tracksource = new NyARTrackerSource_Reference(i_number_of_sample, i_ref_raster_distortion, i_fmt_width, i_fmt_height, i_depth, true);
     return;
 }
        private double _f3; //s


        /**
         * この関数は、参照元から歪みパラメータ値をコピーします。
         * @param i_ref
         * コピー元のオブジェクト。
         */
        public void copyFrom(NyARCameraDistortionFactor i_ref)
        {
            this._f0 = i_ref._f0;
            this._f1 = i_ref._f1;
            this._f2 = i_ref._f2;
            this._f3 = i_ref._f3;
            return;
        }
예제 #7
0
 /**
  * この関数は、コンストラクタから呼び出してください。
  * @param i_distfactor
  * 歪みの逆矯正に使うオブジェクト。
  * @param i_projmat
  * @
  */
 private void initInstance(NyARCameraDistortionFactor i_distfactor, NyARPerspectiveProjectionMatrix i_projmat)
 {
     this._transsolver = new NyARTransportVectorSolver(i_projmat, 4);
     //互換性が重要な時は、NyARRotMatrix_ARToolKitを使うこと。
     //理屈はNyARRotMatrix_NyARToolKitもNyARRotMatrix_ARToolKitも同じだけど、少しだけ値がずれる。
     this._rotmatrix          = new NyARRotMatrix(i_projmat);
     this._mat_optimize       = new NyARPartialDifferentiationOptimize(i_projmat);
     this._ref_dist_factor    = i_distfactor;
     this._ref_projection_mat = i_projmat;
     return;
 }
예제 #8
0
 public NyARTransMat(NyARParam i_param)
 {
     NyARCameraDistortionFactor dist = i_param.getDistortionFactor();
     NyARPerspectiveProjectionMatrix pmat = i_param.getPerspectiveProjectionMatrix();
     this._transsolver = new NyARTransportVectorSolver(pmat, 4);
     //互換性が重要な時は、NyARRotMatrix_ARToolKitを使うこと。
     //理屈はNyARRotMatrix_NyARToolKitもNyARRotMatrix_ARToolKitも同じだけど、少しだけ値がずれる。
     this._rotmatrix = new NyARRotMatrix(pmat);
     this._mat_optimize = new NyARPartialDifferentiationOptimize(pmat);
     this._ref_dist_factor = dist;
     this._projection_mat_ref = pmat;
 }
예제 #9
0
        public Coord2Linear(NyARIntSize i_size, NyARCameraDistortionFactor i_distfactor_ref)
        {
            //歪み計算テーブルを作ると、8*width/height*2の領域を消費します。
            //領域を取りたくない場合は、i_dist_factor_refの値をそのまま使ってください。
            this._dist_factor = new NyARObserv2IdealMap(i_distfactor_ref, i_size);


            // 輪郭バッファ
            this._pca  = new NyARPca2d_MatrixPCA_O2();
            this._xpos = new double[i_size.w + i_size.h];    //最大辺長はthis._width+this._height
            this._ypos = new double[i_size.w + i_size.h];    //最大辺長はthis._width+this._height
            return;
        }
예제 #10
0
        public NyARTransMat(NyARParam i_param)
        {
            NyARCameraDistortionFactor      dist = i_param.getDistortionFactor();
            NyARPerspectiveProjectionMatrix pmat = i_param.getPerspectiveProjectionMatrix();

            this._transsolver = new NyARTransportVectorSolver(pmat, 4);
            //互換性が重要な時は、NyARRotMatrix_ARToolKitを使うこと。
            //理屈はNyARRotMatrix_NyARToolKitもNyARRotMatrix_ARToolKitも同じだけど、少しだけ値がずれる。
            this._rotmatrix          = new NyARRotMatrix(pmat);
            this._mat_optimize       = new NyARPartialDifferentiationOptimize(pmat);
            this._ref_dist_factor    = dist;
            this._projection_mat_ref = pmat;
        }
예제 #11
0
	    public Coord2Linear(NyARIntSize i_size,NyARCameraDistortionFactor i_distfactor_ref)
	    {
		    //歪み計算テーブルを作ると、8*width/height*2の領域を消費します。
		    //領域を取りたくない場合は、i_dist_factor_refの値をそのまま使ってください。
		    this._dist_factor = new NyARObserv2IdealMap(i_distfactor_ref,i_size);


		    // 輪郭バッファ
		    this._pca=new NyARPca2d_MatrixPCA_O2();
		    this._xpos=new double[i_size.w+i_size.h];//最大辺長はthis._width+this._height
		    this._ypos=new double[i_size.w+i_size.h];//最大辺長はthis._width+this._height
		    return;
	    }
예제 #12
0
 /**
  * @param i_size
  * @param i_distfactor_ref
  * カメラ歪みを補正する場合のパラメータを指定します。
  * nullの場合、補正マップを使用しません。
  */
 public NyARCoord2Linear(NyARIntSize i_size, NyARCameraDistortionFactor i_distfactor)
 {
     if (i_distfactor != null)
     {
         this._dist_factor = new NyARObserv2IdealMap(i_distfactor, i_size);
     }
     else
     {
         this._dist_factor = null;
     }
     // 輪郭バッファ
     this._pca  = new NyARPca2d_MatrixPCA_O2();
     this._xpos = new double[i_size.w + i_size.h];    //最大辺長はthis._width+this._height
     this._ypos = new double[i_size.w + i_size.h];    //最大辺長はthis._width+this._height
     return;
 }
예제 #13
0
        /**
         * 最大i_squre_max個のマーカーを検出するクラスを作成する。
         * 
         * @param i_param
         */
        public NyARSquareDetector(NyARCameraDistortionFactor i_dist_factor_ref, NyARIntSize i_size)
        {
            this._width = i_size.w;
            this._height = i_size.h;
            this._dist_factor_ref = i_dist_factor_ref;
            this._labeling = new NyARLabeling_ARToolKit();
            this._limage = new NyARLabelingImage(this._width, this._height);
            this._labeling.attachDestination(this._limage);

            // 輪郭の最大長は画面に映りうる最大の長方形サイズ。
            int number_of_coord = (this._width + this._height) * 2;

            // 輪郭バッファは頂点変換をするので、輪郭バッファの2倍取る。
            this._max_coord = number_of_coord;
            this._xcoord = new int[number_of_coord * 2];
            this._ycoord = new int[number_of_coord * 2];
        }
예제 #14
0
        /**
         * 最大i_squre_max個のマーカーを検出するクラスを作成する。
         *
         * @param i_param
         */
        public NyARSquareDetector(NyARCameraDistortionFactor i_dist_factor_ref, NyARIntSize i_size)
        {
            this._width           = i_size.w;
            this._height          = i_size.h;
            this._dist_factor_ref = i_dist_factor_ref;
            this._labeling        = new NyARLabeling_ARToolKit();
            this._limage          = new NyARLabelingImage(this._width, this._height);
            this._labeling.attachDestination(this._limage);

            // 輪郭の最大長は画面に映りうる最大の長方形サイズ。
            int number_of_coord = (this._width + this._height) * 2;

            // 輪郭バッファは頂点変換をするので、輪郭バッファの2倍取る。
            this._max_coord = number_of_coord;
            this._xcoord    = new int[number_of_coord * 2];
            this._ycoord    = new int[number_of_coord * 2];
        }
 /**
  * @param i_number_of_sample
  * サンプラが検出する最大数。
  * 通常100~200以上を指定します。(QVGA画像あたり、100個を基準にします。)
  * 数が少なすぎると、検出率が低下します。最低でも、NyARTrackerに設定するターゲット数の合計*2以上を指定してください。
  * @param i_ref_raster_distortion
  * 歪み矯正の為のオブジェクトを指定します。歪み矯正が必要ない時は、NULLを指定します。
  * @param i_width
  * ソース画像のサイズ
  * @param i_height
  * ソース画像のサイズ
  * @param i_depth
  * 解像度の深さ(1/(2^n))倍の画像として処理する。
  * @param i_is_alloc
  * ベースラスタのバッファを内部確保外部参照にするかのフラグです。
  * trueの場合、バッファは内部に確保され、{@link #wrapBuffer}関数が使用できなくなります。
  * @throws NyARException
  */
 public NyARTrackerSource_Reference(int i_number_of_sample, NyARCameraDistortionFactor i_ref_raster_distortion, int i_width, int i_height, int i_depth, bool i_is_alloc)
     : base((int)Math.Pow(2, i_depth))
 {
     Debug.Assert(i_depth>0);
     int div=this._rob_resolution;
     //主GSラスタ
     this._base_raster=new NyARGrayscaleRaster(i_width,i_height,NyARBufferType.INT1D_GRAY_8,i_is_alloc);
     this._gs_graphics = NyARGsRasterGraphicsFactory.createDriver(this._base_raster);
     //Roberts変換ラスタ
     this._rb_source=new NyARGrayscaleRaster(i_width/div,i_height/div,NyARBufferType.INT1D_GRAY_8, true);
     //Robertsラスタは最も解像度の低いラスタと同じ
     this._rbraster=new NyARGrayscaleRaster(i_width/div,i_height/div,NyARBufferType.INT1D_GRAY_8, true);
     this._vec_reader=new NyARVectorReader_INT1D_GRAY_8(this._base_raster,i_ref_raster_distortion,this._rbraster);
     //samplerとsampleout
     this._sampler=new LowResolutionLabelingSampler(i_width, i_height,(int)Math.Pow(2,i_depth));
     this._sample_out=new LowResolutionLabelingSamplerOut(i_number_of_sample);
 }
 public NyARObserv2IdealMap(NyARCameraDistortionFactor i_distfactor, NyARIntSize i_screen_size)
 {
     NyARDoublePoint2d opoint = new NyARDoublePoint2d();
     this._mapx = new double[i_screen_size.w * i_screen_size.h];
     this._mapy = new double[i_screen_size.w * i_screen_size.h];
     this._stride = i_screen_size.w;
     int ptr = i_screen_size.h * i_screen_size.w - 1;
     //歪みマップを構築
     for (int i = i_screen_size.h - 1; i >= 0; i--)
     {
         for (int i2 = i_screen_size.w - 1; i2 >= 0; i2--)
         {
             i_distfactor.observ2Ideal(i2, i, opoint);
             this._mapx[ptr] = opoint.x;
             this._mapy[ptr] = opoint.y;
             ptr--;
         }
     }
     return;
 }
 public NyARFixedFloatObserv2IdealMap(NyARCameraDistortionFactor i_distfactor, NyARIntSize i_screen_size)
 {
     NyARDoublePoint2d opoint = new NyARDoublePoint2d();
     this._mapx = new int[i_screen_size.w * i_screen_size.h];
     this._mapy = new int[i_screen_size.w * i_screen_size.h];
     this._stride = i_screen_size.w;
     int ptr = i_screen_size.h * i_screen_size.w - 1;
     //歪みマップを構築
     for (int i = i_screen_size.h - 1; i >= 0; i--)
     {
         for (int i2 = i_screen_size.w - 1; i2 >= 0; i2--)
         {
             i_distfactor.observ2Ideal(i2, i, opoint);
             this._mapx[ptr] = (int)(opoint.x * 65536);
             this._mapy[ptr] = (int)(opoint.y * 65536);
             ptr--;
         }
     }
     i_distfactor.getValue(this._factor);
     return;
 }
예제 #18
0
        public NyARObserv2IdealMap(NyARCameraDistortionFactor i_distfactor, NyARIntSize i_screen_size)
        {
            NyARDoublePoint2d opoint = new NyARDoublePoint2d();

            this._mapx   = new double[i_screen_size.w * i_screen_size.h];
            this._mapy   = new double[i_screen_size.w * i_screen_size.h];
            this._stride = i_screen_size.w;
            int ptr = i_screen_size.h * i_screen_size.w - 1;

            //歪みマップを構築
            for (int i = i_screen_size.h - 1; i >= 0; i--)
            {
                for (int i2 = i_screen_size.w - 1; i2 >= 0; i2--)
                {
                    i_distfactor.observ2Ideal(i2, i, opoint);
                    this._mapx[ptr] = opoint.x;
                    this._mapy[ptr] = opoint.y;
                    ptr--;
                }
            }
            return;
        }
 public NyARFixedFloatIdeal2Observ(NyARCameraDistortionFactor i_distfactor)
 {
     i_distfactor.getValue(this._factor);
     return;
 }
예제 #20
0
 /**
  * この関数は、コンストラクタから呼び出してください。
  * @param i_distfactor
  * 歪みの逆矯正に使うオブジェクト。
  * @param i_projmat
  * @
  */
 private void initInstance(NyARCameraDistortionFactor i_distfactor, NyARPerspectiveProjectionMatrix i_projmat)
 {
     this._transsolver = new NyARTransportVectorSolver(i_projmat, 4);
     //互換性が重要な時は、NyARRotMatrix_ARToolKitを使うこと。
     //理屈はNyARRotMatrix_NyARToolKitもNyARRotMatrix_ARToolKitも同じだけど、少しだけ値がずれる。
     this._rotmatrix = new NyARRotMatrix(i_projmat);
     this._mat_optimize = new NyARPartialDifferentiationOptimize(i_projmat);
     this._ref_dist_factor = i_distfactor;
     this._ref_projection_mat = i_projmat;
     return;
 }
예제 #21
0
 /**
  * コンストラクタです。
  * 座標計算に必要なオブジェクトの参照値を元に、インスタンスを生成します。
  * @param i_ref_distfactor
  * 樽型歪み矯正オブジェクトの参照値です。歪み矯正が不要な時は、nullを指定します。
  * @param i_ref_projmat
  * 射影変換オブジェクトの参照値です。
  * @
  */
 public NyARTransMat(NyARCameraDistortionFactor i_ref_distfactor, NyARPerspectiveProjectionMatrix i_ref_projmat)
 {
     initInstance(i_ref_distfactor, i_ref_projmat);
     return;
 }
예제 #22
0
 /**
  * コンストラクタです。
  * 座標計算に必要なオブジェクトの参照値を元に、インスタンスを生成します。
  * @param i_ref_distfactor
  * 樽型歪み矯正オブジェクトの参照値です。歪み矯正が不要な時は、nullを指定します。
  * @param i_ref_projmat
  * 射影変換オブジェクトの参照値です。
  * @
  */
 public NyARTransMat(NyARCameraDistortionFactor i_ref_distfactor, NyARPerspectiveProjectionMatrix i_ref_projmat)
 {
     initInstance(i_ref_distfactor, i_ref_projmat);
     return;
 }
예제 #23
0
 /**
  * コンストラクタ。
  * @param i_screen
  * スクリーン(入力画像)のサイズを指定します。
  * @param i_near
  * {@link #NyARReality(NyARParam i_param,double i_near,double i_far,int i_max_known_target,int i_max_unknown_target)}を参照
  * @param i_far
  * {@link #NyARReality(NyARParam i_param,double i_near,double i_far,int i_max_known_target,int i_max_unknown_target)}を参照
  * @param i_prjmat
  * ARToolKit形式の射影変換パラメータを指定します。
  * @param i_dist_factor
  * カメラ歪み矯正オブジェクトを指定します。歪み矯正が不要な時は、nullを指定します。
  * @param i_max_known_target
  * {@link #NyARReality(NyARParam i_param,double i_near,double i_far,int i_max_known_target,int i_max_unknown_target)}を参照
  * @param i_max_unknown_target
  * {@link #NyARReality(NyARParam i_param,double i_near,double i_far,int i_max_known_target,int i_max_unknown_target)}を参照
  * @throws NyARException
  */
 public NyARReality(NyARIntSize i_screen,double i_near,double i_far,NyARPerspectiveProjectionMatrix i_prjmat,NyARCameraDistortionFactor i_dist_factor,int i_max_known_target,int i_max_unknown_target)
 {
     this.MAX_LIMIT_KNOWN=i_max_known_target;
     this.MAX_LIMIT_UNKNOWN=i_max_unknown_target;
     this.initInstance(i_screen,i_near,i_far,i_prjmat,i_dist_factor);
 }
 /**
  * 継承クラスのコンストラクタから呼び出す。
  * @param i_ref_raster
  * 基本画像
  * @param i_ref_raster_distortion
  * 歪み解除オブジェクト(nullの場合歪み解除を省略)
  * @param i_ref_rob_raster
  * エッジ探索用のROB画像
  * @param i_contour_pickup
  * 輪郭線取得クラス
  * @param
  */
 public void initInstance(NyARGrayscaleRaster i_ref_raster,NyARCameraDistortionFactor i_ref_raster_distortion,NyARGrayscaleRaster i_ref_rob_raster,NyARContourPickup i_contour_pickup)
 {
     this._rob_resolution=i_ref_raster.getWidth()/i_ref_rob_raster.getWidth();
     this._ref_rob_raster=i_ref_rob_raster;
     this._ref_base_raster=i_ref_raster;
     this._coord_buf = new NyARIntCoordinates((i_ref_raster.getWidth() + i_ref_raster.getHeight()) * 4);
     this._factor=i_ref_raster_distortion;
     this._tmp_coord_pos = VecLinearCoordinates.VecLinearCoordinatePoint.createArray(this._coord_buf.items.Length);
     this._cpickup = i_contour_pickup;
     return;
 }
예제 #25
0
        /**
         * コンストラクタから呼び出す共通な初期化部分です。
         * @param i_dist_factor
         * @param i_prjmat
         * @throws NyARException
         */
        protected void initInstance(NyARIntSize i_screen,double i_near,double i_far,NyARPerspectiveProjectionMatrix i_prjmat,NyARCameraDistortionFactor i_dist_factor)
        {
            int number_of_reality_target=this.MAX_LIMIT_KNOWN+this.MAX_LIMIT_UNKNOWN;
            //演算インスタンス
            this._transmat=new NyARTransMat(i_dist_factor,i_prjmat);

            //データインスタンス
            this._pool=new NyARRealityTargetPool(number_of_reality_target,i_prjmat);
            this.target=new NyARRealityTargetList(number_of_reality_target);
            //Trackerの特性値
            this._tracker=new NyARTracker((this.MAX_LIMIT_KNOWN+this.MAX_LIMIT_UNKNOWN)*2,1,this.MAX_LIMIT_KNOWN*2);
            //フラスタムの計算とスクリーンサイズの保存
            this._ref_prjmat=i_prjmat;
            this._frustum=new NyARFrustum(i_prjmat,i_screen.w,i_screen.h, i_near, i_far);

            //初期化
            this._number_of_dead=this._number_of_unknown=this._number_of_known=0;
            return;
        }