Exemple #1
0
        /**
         * この関数は、現在の基準パターンと検査パターンを比較して、類似度を計算します。
         * @param i_patt
         * 検査パターンを格納したオブジェクトです。このサイズは、基準パターンと一致している必要があります。
         * @param o_result
         * 結果を受け取るオブジェクトです。
         * @return
         * 検査に成功するとtrueを返します。
         * @
         */
        public bool evaluate(NyARMatchPattDeviationBlackWhiteData i_patt, NyARMatchPattResult o_result)
        {
            Debug.Assert(this._ref_code_patt != null);

            int[]  linput = i_patt.getData();
            int    sum;
            double max = 0.0;
            int    res = NyARMatchPattResult.DIRECTION_UNKNOWN;


            for (int j = 0; j < 4; j++)
            {
                //合計値初期化
                sum = 0;
                NyARMatchPattDeviationBlackWhiteData code_patt = this._ref_code_patt.getBlackWhiteData(j);
                int[] pat_j = code_patt.getData();
                //<全画素について、比較(FORの1/16展開)/>
                int i;
                for (i = this._pixels - 1; i >= 0; i--)
                {
                    sum += linput[i] * pat_j[i];
                }
                //0.7776737688877927がでればOK
                double sum2 = sum / code_patt.getPow() / i_patt.getPow();// sum2 = sum / patpow[k][j]/ datapow;
                if (sum2 > max)
                {
                    max = sum2;
                    res = j;
                }
            }
            o_result.direction  = res;
            o_result.confidence = max;
            return(true);
        }
Exemple #2
0
        /**
         * この関数は、現在の基準パターンと検査パターンを比較して、類似度を計算します。
         * @param i_patt
         * 検査パターンを格納したオブジェクトです。このサイズは、基準パターンと一致している必要があります。
         * @param o_result
         * 結果を受け取るオブジェクトです。
         * @return
         * 検査に成功するとtrueを返します。
         * @
         */
        public bool evaluate(NyARMatchPattDeviationColorData i_patt, NyARMatchPattResult o_result)
        {
            Debug.Assert(this._code_patt != null);
            //
            int[]  linput = i_patt.getData();
            int    sum;
            double max     = double.MinValue;
            int    res     = NyARMatchPattResult.DIRECTION_UNKNOWN;
            int    for_mod = this._optimize_for_mod;

            for (int j = 0; j < 4; j++)
            {
                //合計値初期化
                sum = 0;
                NyARMatchPattDeviationColorData code_patt = this._code_patt.getColorData(j);
                int[] pat_j = code_patt.getData();
                //<全画素について、比較(FORの1/16展開)>
                int i;
                for (i = this._rgbpixels - 1; i >= for_mod; i--)
                {
                    sum += linput[i] * pat_j[i];
                }
                for (; i >= 0;)
                {
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                    sum += linput[i] * pat_j[i]; i--;
                }
                //<全画素について、比較(FORの1/16展開)/>
                double sum2 = sum / code_patt.getPow();// sum2 = sum / patpow[k][j]/ datapow;
                if (sum2 > max)
                {
                    max = sum2;
                    res = j;
                }
            }
            o_result.direction  = res;
            o_result.confidence = max / i_patt.getPow();
            return(true);
        }
 /**
  * この関数は、現在の基準パターンと検査パターンを比較して、類似度を計算します。
  * @param i_patt
  * 検査パターンを格納したオブジェクトです。このサイズは、基準パターンと一致している必要があります。
  * @param o_result
  * 結果を受け取るオブジェクトです。
  * @return
  * 検査に成功するとtrueを返します。
  * @
  */
 public bool evaluate(NyARMatchPattDeviationColorData i_patt, NyARMatchPattResult o_result)
 {
     Debug.Assert(this._code_patt != null);
     //
     int[] linput = i_patt.getData();
     int sum;
     double max = double.MinValue;
     int res = NyARMatchPattResult.DIRECTION_UNKNOWN;
     int for_mod = this._optimize_for_mod;
     for (int j = 0; j < 4; j++)
     {
         //合計値初期化
         sum = 0;
         NyARMatchPattDeviationColorData code_patt = this._code_patt.getColorData(j);
         int[] pat_j = code_patt.getData();
         //<全画素について、比較(FORの1/16展開)>
         int i;
         for (i = this._rgbpixels - 1; i >= for_mod; i--)
         {
             sum += linput[i] * pat_j[i];
         }
         for (; i >= 0; )
         {
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
             sum += linput[i] * pat_j[i]; i--;
         }
         //<全画素について、比較(FORの1/16展開)/>
         double sum2 = sum / code_patt.getPow();// sum2 = sum / patpow[k][j]/ datapow;
         if (sum2 > max)
         {
             max = sum2;
             res = j;
         }
     }
     o_result.direction = res;
     o_result.confidence = max / i_patt.getPow();
     return true;
 }
        /**
         * この関数は、現在の基準パターンと検査パターンを比較して、類似度を計算します。
         * @param i_patt
         * 検査パターンを格納したオブジェクトです。このサイズは、基準パターンと一致している必要があります。
         * @param o_result
         * 結果を受け取るオブジェクトです。
         * @return
         * 検査に成功するとtrueを返します。
         * @
         */
        public bool evaluate(NyARMatchPattDeviationBlackWhiteData i_patt, NyARMatchPattResult o_result)
        {
            Debug.Assert(this._ref_code_patt != null);

            int[] linput = i_patt.getData();
            int sum;
            double max = 0.0;
            int res = NyARMatchPattResult.DIRECTION_UNKNOWN;

            for (int j = 0; j < 4; j++)
            {
                //合計値初期化
                sum = 0;
                NyARMatchPattDeviationBlackWhiteData code_patt = this._ref_code_patt.getBlackWhiteData(j);
                int[] pat_j = code_patt.getData();
                //<全画素について、比較(FORの1/16展開)/>
                int i;
                for (i = this._pixels - 1; i >= 0; i--)
                {
                    sum += linput[i] * pat_j[i];
                }
                //0.7776737688877927がでればOK
                double sum2 = sum / code_patt.getPow() / i_patt.getPow();// sum2 = sum / patpow[k][j]/ datapow;
                if (sum2 > max)
                {
                    max = sum2;
                    res = j;
                }
            }
            o_result.direction = res;
            o_result.confidence = max;
            return true;
        }