public static NyARNftFreakFsetFile genFeatureSet3(NyARNftIsetFile i_iset_file)
        {
            int max_features = 500;
            DogFeaturePointStack   _dog_feature_points = new DogFeaturePointStack(max_features);
            FreakFeaturePointStack query_keypoint      = new FreakFeaturePointStack(max_features);
            //
            List <NyARNftFreakFsetFile.RefDataSet> refdataset = new List <NyARNftFreakFsetFile.RefDataSet>();
            List <NyARNftFreakFsetFile.ImageInfo>  imageinfo  = new List <NyARNftFreakFsetFile.ImageInfo>();

            for (int ii = 0; ii < i_iset_file.items.Length; ii++)
            {
                NyARNftIsetFile.ReferenceImage rimg         = i_iset_file.items[ii];
                FREAKExtractor            mFeatureExtractor = new FREAKExtractor();
                int                       octerves          = BinomialPyramid32f.octavesFromMinimumCoarsestSize(rimg.width, rimg.height, 8);
                BinomialPyramid32f        _pyramid          = new BinomialPyramid32f(rimg.width, rimg.height, octerves, 3);
                DoGScaleInvariantDetector _dog_detector     = new DoGScaleInvariantDetector(rimg.width, rimg.height, octerves, 3, 3, 4, max_features);

                //RefDatasetの作成
                _pyramid.build(NyARGrayscaleRaster.createInstance(rimg.width, rimg.height, NyARBufferType.INT1D_GRAY_8, rimg.img));
                // Detect feature points
                _dog_feature_points.clear();
                _dog_detector.detect(_pyramid, _dog_feature_points);

                // Extract features
                query_keypoint.clear();
                mFeatureExtractor.extract(_pyramid, _dog_feature_points, query_keypoint);

                for (int i = 0; i < query_keypoint.getLength(); i++)
                {
                    FreakFeaturePoint ffp = query_keypoint.getItem(i);
                    NyARNftFreakFsetFile.RefDataSet rds = new NyARNftFreakFsetFile.RefDataSet();
                    rds.pageNo     = 1;
                    rds.refImageNo = ii;
                    rds.coord2D.setValue(ffp.x, ffp.y);
                    rds.coord3D.setValue((ffp.x + 0.5f) / rimg.dpi * 25.4f, ((rimg.height - 0.5f) - ffp.y) / rimg.dpi * 25.4f);
                    rds.featureVec.angle  = ffp.angle;
                    rds.featureVec.maxima = ffp.maxima ? 1 : 0;
                    rds.featureVec.scale  = ffp.scale;
                    ffp.descripter.getValueLe(rds.featureVec.v);
                    refdataset.Add(rds);
                }
                imageinfo.Add(new NyARNftFreakFsetFile.ImageInfo(rimg.width, rimg.height, ii));
            }
            NyARNftFreakFsetFile.PageInfo[] pi = new NyARNftFreakFsetFile.PageInfo[1];
            pi[0] = new NyARNftFreakFsetFile.PageInfo(1, imageinfo.ToArray());
            return(new NyARNftFreakFsetFile(refdataset.ToArray(), pi));
        }
Exemple #2
0
 public static INyARGrayscaleRaster createInstance(NyARIntSize i_size)
 {
     return(NyARGrayscaleRaster.createInstance(i_size.w, i_size.h, true));
 }
Exemple #3
0
 /**
  * 画像のサイズパラメータとバッファ参照方式を指定して、インスタンスを生成します。
  * バッファの形式は、{@link NyARBufferType#INT1D_GRAY_8}です。
  * @param i_width
  * ラスタのサイズ
  * @param i_height
  * ラスタのサイズ
  * @param i_is_alloc
  * バッファを外部参照にするかのフラグ値。
  * trueなら内部バッファ、falseなら外部バッファを使用します。
  * falseの場合、初期のバッファはnullになります。インスタンスを生成したのちに、{@link #wrapBuffer}を使って割り当ててください。
  * @throws NyARRuntimeException
  */
 public static INyARGrayscaleRaster createInstance(int i_width, int i_height, bool i_is_alloc)
 {
     return(NyARGrayscaleRaster.createInstance(i_width, i_height, NyARBufferType.INT1D_GRAY_8, i_is_alloc));
 }
Exemple #4
0
 /**
  * 内部参照のバッファ({@link NyARBufferType#INT1D_GRAY_8}形式)を持つインスタンスを生成します。
  * @param i_width
  * ラスタのサイズ
  * @param i_height
  * ラスタのサイズ
  * @throws NyARRuntimeException
  */
 public static INyARGrayscaleRaster createInstance(int i_width, int i_height)
 {
     return(NyARGrayscaleRaster.createInstance(i_width, i_height, true));
 }
 /**
  * レイヤ2以降のイメージを生成する。
  * idxは{@link #dpi }のlength-1まで。
  * @param i_idx
  * @return
  */
 public ReferenceImage(int i_w, int i_h, int[] i_src, double i_src_dpi, double i_dest_dpi) : this(NyARGrayscaleRaster.createInstance(i_w, i_h, NyARBufferType.INT1D_GRAY_8, i_src), i_src_dpi, i_dest_dpi)
 {
     //int1Dラスタのラッパーを通して実行する。
     ;
     return;
 }