Beispiel #1
0
 /**
  * ターゲットリストを参考に、sampleを振り分て、サンプルスタックに格納します。
  * ターゲットは、rect>coord>new>ignoreの順に優先して振り分けられます。
  * @param i_snapshot
  * @param i_source
  * @param i_new
  * @param i_ig
  * @param i_cood
  * @param i_rect
  * @param i_newsrc
  * @param i_igsrc
  * @param i_coodsrc
  * @param i_rectsrc
  * @throws NyARException
  */
 private void sampleMapper(
     LowResolutionLabelingSamplerOut i_source,
     NyARTargetList i_new, NyARTargetList i_ig, NyARTargetList i_cood, NyARTargetList i_rect,
     SampleStack i_newsrc, SampleStack i_igsrc, SampleStack i_coodsrc, SampleStack i_rectsrc)
 {
     //スタックを初期化
     i_newsrc.clear();
     i_coodsrc.clear();
     i_igsrc.clear();
     i_rectsrc.clear();
     //
     LowResolutionLabelingSamplerOut.Item[] sample_items = i_source.getArray();
     for (int i = i_source.getLength() - 1; i >= 0; i--)
     {
         //サンプラからの値を其々のターゲットのソースへ分配
         LowResolutionLabelingSamplerOut.Item sample_item = sample_items[i];
         int id;
         id = i_rect.getMatchTargetIndex(sample_item);
         if (id >= 0)
         {
             i_rectsrc.push(sample_item);
             continue;
         }
         //coord
         id = i_cood.getMatchTargetIndex(sample_item);
         if (id >= 0)
         {
             i_coodsrc.push(sample_item);
             continue;
         }
         //newtarget
         id = i_new.getMatchTargetIndex(sample_item);
         if (id >= 0)
         {
             i_newsrc.push(sample_item);
             continue;
         }
         //ignore target
         id = i_ig.getMatchTargetIndex(sample_item);
         if (id >= 0)
         {
             i_igsrc.push(sample_item);
             continue;
         }
         //マップできなかったものは、NewTragetへ登録(種類別のListには反映しない)
         NyARTarget t = this.addNewTarget(sample_item);
         if (t == null)
         {
             continue;
         }
         i_newsrc.push(sample_item);
     }
     return;
 }
Beispiel #2
0
        /**
         * コンストラクタです。
         * @param i_max_new
         * Newトラックターゲットの最大数を指定します。
         * @param i_max_cont
         * Contourトラックターゲットの最大数を指定します。
         * @param i_max_rect
         * Rectトラックターゲットの最大数を指定します。
         * @throws NyARException
         */
        public NyARTracker(int i_max_new, int i_max_cont, int i_max_rect)
        {
            //環境定数の設定
            this.MAX_NUMBER_OF_NEW     = i_max_new;
            this.MAX_NUMBER_OF_CONTURE = i_max_cont;
            this.MAX_NUMBER_OF_RECT    = i_max_rect;
            this.MAX_NUMBER_OF_TARGET  = (i_max_new + i_max_cont + i_max_rect) * 5;


            //ターゲットマップ用の配列と、リスト。この関数はNyARTargetStatusのIDと絡んでるので、気をつけて!
            this._temp_targets = new NyARTargetList[NyARTargetStatus.MAX_OF_ST_KIND + 1];
            this._temp_targets[NyARTargetStatus.ST_NEW]     = new NyARTargetList(i_max_new);
            this._temp_targets[NyARTargetStatus.ST_IGNORE]  = new NyARTargetList(this.MAX_NUMBER_OF_TARGET);
            this._temp_targets[NyARTargetStatus.ST_CONTURE] = new NyARTargetList(i_max_cont);
            this._temp_targets[NyARTargetStatus.ST_RECT]    = new NyARRectTargetList(i_max_rect);

            //ソースリスト
            this._newsource   = new SampleStack(i_max_new);
            this._igsource    = new SampleStack(this.MAX_NUMBER_OF_TARGET);
            this._coordsource = new SampleStack(i_max_cont);
            this._rectsource  = new SampleStack(i_max_rect);

            //ステータスプール
            this.newst_pool     = new NyARNewTargetStatusPool(i_max_new * 2);
            this.contourst_pool = new NyARContourTargetStatusPool(i_max_rect + i_max_cont * 2);
            this.rect_pool      = new NyARRectTargetStatusPool(i_max_rect * 2);
            //ターゲットプール
            this.target_pool = new NyARTargetPool(this.MAX_NUMBER_OF_TARGET);
            //ターゲット
            this._targets = new NyARTargetList(this.MAX_NUMBER_OF_TARGET);

            //ここ注意!マップの最大値は、ソースアイテムの個数よりおおきいこと!
            this._map   = new DistMap(this.MAX_NUMBER_OF_TARGET, this.MAX_NUMBER_OF_TARGET);
            this._index = new int[this.MAX_NUMBER_OF_TARGET];

            //定数初期化
            this._number_of_new = this._number_of_ignore = this._number_of_contoure = this._number_of_rect = 0;
        }
Beispiel #3
0
 public void makePairIndexes(SampleStack igsource, NyARTargetList igtr, int[] index)
 {
     this.setPointDists(igsource.getArray(), igsource.getLength(), igtr.getArray(), igtr.getLength());
     this.getMinimumPair(index);
     return;
 }