/**
	     * @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, INyARCameraDistortionFactor 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);
	    }
        /**
         * @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, INyARCameraDistortionFactor 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);
        }