Example #1
0
        /**
         * この関数は、画像から登録済のマーカ検出を行います。
         * マーカの検出に成功すると、thisのプロパティにマーカの二次元位置を記録します。
         * 関数の成功後は、マーカの姿勢行列と、一致度を、それぞれ{@link #getTransmationMatrix}と{@link #getConfidence}から得ることができます。
         * @param i_raster
         * マーカーを検出する画像。画像のサイズは、コンストラクタに指定した{@link NyARParam}オブジェクトと一致していなければなりません。
         * @param i_th
         * 2値化敷居値。0から256までの値を指定します。
         * @return
         * マーカーが検出できたかを、真偽値で返します。
         * @
         */
        public bool detectMarkerLite(INyARRgbRaster i_raster, int i_th)
        {
            //サイズチェック
            if (!this._bin_raster.getSize().isEqualSize(i_raster.getSize()))
            {
                throw new NyARException();
            }

            //最終入力ラスタを更新
            if (this._last_input_raster != i_raster)
            {
                this._bin_filter        = (INyARRgb2GsFilterArtkTh)i_raster.createInterface(typeof(INyARRgb2GsFilterArtkTh));
                this._last_input_raster = i_raster;
            }

            //ラスタを2値イメージに変換する.
            this._bin_filter.doFilter(i_th, this._bin_raster);

            //コールバックハンドラの準備
            this._confidence        = 0;
            this._last_input_raster = i_raster;

            //
            //マーカ検出器をコール
            this.execDetectMarker();
            if (this._confidence == 0)
            {
                return(false);
            }
            return(true);
        }
Example #2
0
        /**
         * この関数は、画像から登録済のマーカ検出を行います。
         * マーカの検出に成功すると、thisのプロパティにマーカの二次元位置を記録します。
         * 関数の成功後は、マーカの姿勢行列と、一致度を、それぞれ{@link #getTransmationMatrix}と{@link #getConfidence}から得ることができます。
         * @param i_raster
         * マーカーを検出する画像。画像のサイズは、コンストラクタに指定した{@link NyARParam}オブジェクトと一致していなければなりません。
         * @param i_th
         * 2値化敷居値。0から256までの値を指定します。
         * @return
         * マーカーが検出できたかを、真偽値で返します。
         * @
         */
        public bool detectMarkerLite(INyARRgbRaster i_raster, int i_th)
        {
            NyARIntSize size1, size2;

            size1 = _bin_raster.getSize();
            size2 = i_raster.getSize();
            //System.Windows.Forms.MessageBox.Show("   bin: w " + size1.w.ToString() + " h " + size1.h.ToString() +
            //                                   "\nraster: w " + size2.w.ToString() + " h " + size2.h.ToString());
            //サイズチェック
            if (!this._bin_raster.getSize().isEqualSize(i_raster.getSize()))
            {
                throw new NyARException();
            }
            //最終入力ラスタを更新
            if (this._last_input_raster != i_raster)
            {
                this._bin_filter        = (INyARRgb2GsFilterArtkTh)i_raster.createInterface(typeof(INyARRgb2GsFilterArtkTh));
                this._last_input_raster = i_raster;
            }
            //ラスタを2値イメージに変換する.
            this._bin_filter.doFilter(i_th, this._bin_raster);

            //コールバックハンドラの準備
            this._confidence        = 0;
            this._last_input_raster = i_raster;
            //
            //マーカ検出器をコール
            this.execDetectMarker();
            if (this._confidence == 0)
            {
                return(false);
            }
            return(true);
        }
        /**
         * この関数は、画像からマーカを検出します。
         * 関数は、登録されているマーカパターンそれぞれに対し、検出したマーカから最も一致した物を探し、その一致率と位置を計算します。
         * @param i_raster
         * マーカーを検出するイメージを指定します。
         * @param i_threshold
         * 検出閾値を指定します。0~255の範囲で指定してください。 通常は100~130くらいを指定します。
         * @return
         * 検出したマーカーの数を返します。 マーカーが見つからない場合は0を返します。
         * @
         */
        public int detectMarkerLite(INyARRgbRaster i_raster, int i_threshold)
        {
            // サイズチェック
            if (!this._bin_raster.getSize().isEqualSize(i_raster.getSize()))
            {
                throw new NyARException();
            }
            if (this._last_input_raster != i_raster)
            {
                this._tobin_filter      = (INyARRgb2GsFilterArtkTh)i_raster.createInterface(typeof(INyARRgb2GsFilterArtkTh));
                this._last_input_raster = i_raster;
            }
            this._tobin_filter.doFilter(i_threshold, this._bin_raster);
            //detect
            this._square_detect.init(i_raster);
            this._square_detect.detectMarker(this._bin_raster, 0, this._square_detect);

            //見付かった数を返す。
            return(this._square_detect.result_stack.getLength());
        }
        /**
         * この関数は、画像から登録済のマーカ検出を行います。
         * マーカの検出に成功すると、thisのプロパティにマーカの二次元位置を記録します。
         * 関数の成功後は、マーカの姿勢行列と、一致度を、それぞれ{@link #getTransmationMatrix}と{@link #getConfidence}から得ることができます。
         * @param i_raster
         * マーカーを検出する画像。画像のサイズは、コンストラクタに指定した{@link NyARParam}オブジェクトと一致していなければなりません。
         * @param i_th
         * 2値化敷居値。0から256までの値を指定します。
         * @return
         * マーカーが検出できたかを、真偽値で返します。
         * @
         */
        public bool detectMarkerLite(INyARRgbRaster i_raster, int i_th)
        {
            //サイズチェック
              if (!this._bin_raster.getSize().isEqualSize(i_raster.getSize())) { throw new NyARException(); }

              //最終入力ラスタを更新
              if (this._last_input_raster != i_raster) {
            this._bin_filter = (INyARRgb2GsFilterArtkTh)i_raster.createInterface(typeof(INyARRgb2GsFilterArtkTh));
            this._last_input_raster = i_raster;
              }

              //ラスタを2値イメージに変換する.
              this._bin_filter.doFilter(i_th, this._bin_raster);

              //コールバックハンドラの準備
              this._confidence = 0;
              this._last_input_raster = i_raster;

              //
              //マーカ検出器をコール
              this.execDetectMarker();
              if (this._confidence == 0) { return false; }
              return true;
        }
        /**
         * この関数は、画像から登録済のマーカ検出を行います。
         * マーカの検出に成功すると、thisのプロパティにマーカの二次元位置を記録します。
         * 関数の成功後は、マーカの姿勢行列と、一致度を、それぞれ{@link #getTransmationMatrix}と{@link #getConfidence}から得ることができます。
         * @param i_raster
         * マーカーを検出する画像。画像のサイズは、コンストラクタに指定した{@link NyARParam}オブジェクトと一致していなければなりません。
         * @param i_th
         * 2値化敷居値。0から256までの値を指定します。
         * @return
         * マーカーが検出できたかを、真偽値で返します。
         * @
         */
        public bool detectMarkerLite(INyARRgbRaster i_raster, int i_th)
        {
            NyARIntSize size1, size2;
            size1 = _bin_raster.getSize();
            size2 = i_raster.getSize();
            //System.Windows.Forms.MessageBox.Show("   bin: w " + size1.w.ToString() + " h " + size1.h.ToString() +
            //                                   "\nraster: w " + size2.w.ToString() + " h " + size2.h.ToString());
            //サイズチェック
            if (!this._bin_raster.getSize().isEqualSize(i_raster.getSize()))
            {
                throw new NyARException();
            }
            //最終入力ラスタを更新
            if (this._last_input_raster != i_raster)
            {
                this._bin_filter = (INyARRgb2GsFilterArtkTh)i_raster.createInterface(typeof(INyARRgb2GsFilterArtkTh));
                this._last_input_raster = i_raster;
            }
            //ラスタを2値イメージに変換する.
            this._bin_filter.doFilter(i_th, this._bin_raster);

            //コールバックハンドラの準備
            this._confidence = 0;
            this._last_input_raster = i_raster;
            //
            //マーカ検出器をコール
            this.execDetectMarker();
            if (this._confidence == 0)
            {
                return false;
            }
            return true;
        }