Beispiel #1
0
 /**
  * インデクス番号を特徴点配列に反変換する。
  * @param features
  * @param indics
  * @return
  */
 private static FreakMatchPointSetStack.Item[] intArray2FeaturePointArray(FreakMatchPointSetStack.Item[] features, int[] indics)
 {
     FreakMatchPointSetStack.Item[] r = new FreakMatchPointSetStack.Item[indics.Length];
     for (int i = 0; i < r.Length; i++)
     {
         r[i] = features[indics[i]];
     }
     return(r);
 }
Beispiel #2
0
        /**
         * FsetFileデータから、page_idに一致したキーマップを生成します。
         * @param i_refDataSet
         * @param i_page_id
         */
        public KeyframeMap(NyARNftFreakFsetFile i_refDataSet, int i_page_id)
        {
            NyARNftFreakFsetFile.PageInfo page_info = i_refDataSet.page_info[i_page_id];
            int db_id = 0;

            for (int m = 0; m < page_info.image_info.Length; m++)
            {
                int image_no = page_info.image_info[m].image_no;
                int l        = 0;
                //格納予定のデータ数を数える
                for (int i = 0; i < i_refDataSet.ref_point.Length; i++)
                {
                    if (i_refDataSet.ref_point[i].refImageNo == image_no)
                    {
                        l++;
                    }
                }
                FreakMatchPointSetStack fps = new FreakMatchPointSetStack(l);
                for (int i = 0; i < i_refDataSet.ref_point.Length; i++)
                {
                    if (i_refDataSet.ref_point[i].refImageNo == image_no)
                    {
                        NyARNftFreakFsetFile.RefDataSet t  = i_refDataSet.ref_point[i];
                        FreakMatchPointSetStack.Item    fp = fps.prePush();
                        fp.x      = t.coord2D.x;
                        fp.y      = t.coord2D.y;
                        fp.angle  = t.featureVec.angle;
                        fp.scale  = t.featureVec.scale;
                        fp.maxima = t.featureVec.maxima > 0 ? true : false;
                        if (i_refDataSet.ref_point[i].featureVec.v.Length != 96)
                        {
                            throw new NyARRuntimeException();
                        }
                        fp.descripter.setValueLe(i_refDataSet.ref_point[i].featureVec.v);
                        fp.pos3d.x = t.coord3D.x;
                        fp.pos3d.y = t.coord3D.y;
                        fp.pos3d.z = 0;
                    }
                }
                Keyframe keyframe = new Keyframe(page_info.image_info[m].w, page_info.image_info[m].h, fps);
                this.Add(db_id++, keyframe);
            }
            return;
        }