Beispiel #1
0
        /**
         * NewTargetのステータスを更新します。
         * @param i_sample
         * @throws NyARException
         */
        public static void updateNewStatus(NyARTargetList i_list, NyARNewTargetStatusPool i_pool, LowResolutionLabelingSamplerOut.Item[] source, int[] index)
        {
            NyARTarget d_ptr;

            NyARTarget[] i_nes = i_list.getArray();
            //ターゲットの更新
            for (int i = i_list.getLength() - 1; i >= 0; i--)
            {
                d_ptr = i_nes[i];
                int sample_index = index[i];
                //年齢を加算
                d_ptr._status_life--;
                if (sample_index < 0)
                {
                    //このターゲットに合致するアイテムは無い。
                    ((NyARNewTargetStatus)d_ptr._ref_status).setValue(null);
                    d_ptr._delay_tick++;
                    continue;
                }
                LowResolutionLabelingSamplerOut.Item s = source[sample_index];
                //先にステータスを作成しておく
                NyARNewTargetStatus st = i_pool.newObject();
                if (st == null)
                {
                    //ステータスの生成に失敗
                    d_ptr._delay_tick++;
                    //System.out.println("updateNewStatus:status pool full");
                    continue;
                }
                //新しいステータス値のセット
                st.setValue(s);

                //ターゲットの更新
                d_ptr.setSampleArea(s);
                d_ptr._delay_tick = 0;

                //ref_statusのセットと切り替え(失敗時の上書き防止のためにダブルバッファ化)
                d_ptr._ref_status.releaseObject();
                d_ptr._ref_status = st;
            }
        }
Beispiel #2
0
        /**
         * ContoureTargetのステータスを更新します。
         * @param i_list
         * @param i_vecreader
         * @param i_stpool
         * @param source
         * @param index
         * @throws NyARException
         */
        public static void updateContureStatus(NyARTargetList i_list, INyARVectorReader i_vecreader, NyARContourTargetStatusPool i_stpool, LowResolutionLabelingSamplerOut.Item[] source, int[] index)
        {
            NyARTarget[] crd = i_list.getArray();
            NyARTarget   d_ptr;

            //ターゲットの更新
            for (int i = i_list.getLength() - 1; i >= 0; i--)
            {
                d_ptr = crd[i];
                int sample_index = index[i];
                //年齢を加算
                d_ptr._status_life--;
                if (sample_index < 0)
                {
                    //このターゲットに合致するアイテムは無い。
                    d_ptr._delay_tick++;
                    continue;
                }
                LowResolutionLabelingSamplerOut.Item s = source[sample_index];
                //失敗の可能性を考慮して、Statusを先に生成しておく
                NyARContourTargetStatus st = i_stpool.newObject();
                if (st == null)
                {
                    //失敗(作れなかった?)
                    d_ptr._delay_tick++;
                    continue;
                }
                if (!st.setValue(i_vecreader, s))
                {
                    //新しいステータスのセットに失敗?
                    st.releaseObject();
                    d_ptr._delay_tick++;
                    continue;
                }
                d_ptr.setSampleArea(s);
                d_ptr._delay_tick = 0;
                //ref_statusの切り替え
                d_ptr._ref_status.releaseObject();
                d_ptr._ref_status = st;
            }
        }
Beispiel #3
0
        public static void updateRectStatus(NyARTargetList i_list, INyARVectorReader i_vecreader, NyARRectTargetStatusPool i_stpool, LowResolutionLabelingSamplerOut.Item[] source, int[] index)
        {
            NyARTarget[] rct = i_list.getArray();
            NyARTarget   d_ptr;

            //ターゲットの更新
            for (int i = i_list.getLength() - 1; i >= 0; i--)
            {
                d_ptr = rct[i];
                //年齢を加算
                d_ptr._status_life--;
                //新しいステータスの作成
                NyARRectTargetStatus st = i_stpool.newObject();
                if (st == null)
                {
                    //失敗(作れなかった?)
                    d_ptr._delay_tick++;
                    continue;
                }
                int sample_index = index[i];
                LowResolutionLabelingSamplerOut.Item s = sample_index < 0?null:source[sample_index];
                if (!st.setValueByAutoSelect(i_vecreader, s, (NyARRectTargetStatus)d_ptr._ref_status))
                {
                    st.releaseObject();
                    d_ptr._delay_tick++;
                    continue;
                }
                else
                {
                    if (s != null)
                    {
                        d_ptr.setSampleArea(s);
                    }
                }
                d_ptr._ref_status.releaseObject();
                d_ptr._ref_status = st;
                d_ptr._delay_tick = 0;
            }
        }
Beispiel #4
0
        //
        //update
        //
        private static void updateIgnoreStatus(NyARTargetList i_igliet, LowResolutionLabelingSamplerOut.Item[] source, int[] index)
        {
            NyARTarget d_ptr;

            //マップする。
            NyARTarget[] i_ignore_target = i_igliet.getArray();
            //ターゲットの更新
            for (int i = i_igliet.getLength() - 1; i >= 0; i--)
            {
                d_ptr = i_ignore_target[i];
                int sample_index = index[i];
                //年齢を加算
                d_ptr._status_life--;
                if (sample_index < 0)
                {
                    //このターゲットに合致するアイテムは無い。
                    d_ptr._delay_tick++;
                    continue;
                }
                d_ptr.setSampleArea(source[sample_index]);
                d_ptr._delay_tick = 0;
            }
        }
Beispiel #5
0
 public void makePairIndexes(SampleStack igsource, NyARTargetList igtr, int[] index)
 {
     this.setPointDists(igsource.getArray(), igsource.getLength(), igtr.getArray(), igtr.getLength());
     this.getMinimumPair(index);
     return;
 }