/** * トラックターゲットリストから、tagがNULLの{@link NyARTargetStatus#ST_RECT}アイテムを探して返します。 * @return */ private static NyARTarget FindEmptyTagItem(NyARTargetList i_list) { NyARTarget[] items = i_list.getArray(); for (int i = i_list.getLength() - 1; i >= 0; i--) { if (items[i]._st_type != NyARTargetStatus.ST_RECT) { continue; } if (items[i].tag != null) { continue; } return(items[i]); } return(null); }
/** * 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; } }
/** * 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; } }
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; } }
// //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; } }
public void makePairIndexes(SampleStack igsource, NyARTargetList igtr, int[] index) { this.setPointDists(igsource.getArray(), igsource.getLength(), igtr.getArray(), igtr.getLength()); this.getMinimumPair(index); return; }