From 90973c2088923db3d63364634d0043ff39c00b72 Mon Sep 17 00:00:00 2001 From: nyatla Date: Sun, 14 Sep 2008 13:59:54 +0000 Subject: [PATCH] =?utf8?q?[=E6=9B=B4=E6=96=B0]NyARToolkit/nyatla=E3=83=96?= =?utf8?q?=E3=83=A9=E3=83=B3=E3=83=81-2.0.0=E5=80=99=E8=A3=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- readme.ja.txt | 26 +++++--- .../nyartoolkit/java3d/sample/NyARJava3D.java | 2 +- .../jmf/sample/NyarToolkitLinkTest.java | 2 +- .../nyartoolkit/jogl/sample/JavaSimpleLite.java | 2 +- .../nyartoolkit/jogl/sample/JavaSimpleLite2.java | 4 +- .../nyartoolkit/qt/sample/NyarToolkitLinkTest.java | 2 +- .../nyartoolkit/core/INyARSquareDetector.java | 31 +++++++++ src/jp/nyatla/nyartoolkit/core/NyARCode.java | 49 +++++--------- src/jp/nyatla/nyartoolkit/core/NyARMat.java | 78 ++++++++-------------- .../core/labeling/NyARLabelingImage.java | 2 +- .../nyatla/nyartoolkit/core/param/NyARParam.java | 2 +- .../nyartoolkit/core/pickup/NyARColorPatt_O3.java | 7 +- .../core/raster/rgb/NyARRgbRaster_BGRA.java | 18 ++--- .../core/raster/rgb/NyARRgbRaster_Blank.java | 2 +- .../core/rasterreader/INyARRgbPixelReader.java | 2 +- .../rasterreader/NyARRgbPixelReader_RGB24.java | 18 ++--- .../nyartoolkit/core/transmat/NyARTransMat.java | 2 +- .../nyartoolkit/core/transmat/NyARTransOffset.java | 2 +- .../transmat/optimize/NyARRotTransOptimize.java | 2 +- .../NyARRasterDetector_QrCodeEdge.java | 5 ++ src/jp/nyatla/nyartoolkit/sample/RawFileTest.java | 8 +-- test/jp/nyatla/nyartoolkit/dev/LabelingCamera.java | 11 +-- test/jp/nyatla/nyartoolkit/dev/LabelingTest.java | 6 +- 23 files changed, 144 insertions(+), 139 deletions(-) diff --git a/readme.ja.txt b/readme.ja.txt index 0d4e9e2..8c369da 100644 --- a/readme.ja.txt +++ b/readme.ja.txt @@ -1,21 +1,24 @@ -ARToolkit Java class library NyARToolkit. +ARToolKit Java class library NyARToolkit. Copyright (C)2008 R.Iizuka -version 1.3.0. +version 2.0.0 -http://nyatla.jp/ +http://nyatla.jp/nyartoolkit/ airmail(at)ebony.plala.or.jp -------------------------------------------------- -・NyARToolkit +・NyARToolkit/2.0 + +NyARToolkitは、Pure Javaで実装したARToolKitクラスライブラリです。 + +ARToolKit 2.72.1をベースに構築されています。 + +NyARToolkit/1.xと比較し、構造的な最適化がされ、可読性が向上しています。 -NyARToolkitは、nativeなコードを一切使用しない、Pure Javaのみで -構成されたARToolkitクラスライブラリです。 -ARToolkit 2.72.1をベースに構築されています。 J2SEでのみ動作を確認しました。 J2MEやMIDP2.0にはそのうち対応します。 @@ -29,7 +32,9 @@ http://www.hitl.washington.edu/artoolkit/ ・NyARToolkitの特徴 - -ARToolKitの処理関数を全てクラスベースで再構築してあります。 + -ARToolKitと同等な処理シーケンスを、クラスベースで再構築してあります。 + + -構造的な最適化がされており、ARToolKitと比較して可読性に優れています。  -座標変換の演算性能が1.5倍ほど高速です。(JIT有効時)複数マーカー取り扱い時は、   オリジナルよりも良い成績が得られます。 @@ -41,6 +46,8 @@ http://www.hitl.washington.edu/artoolkit/ + + ・構成 +-----------------------------------------------+ @@ -160,7 +167,7 @@ NyARToolkit.sample.qt ・足りない機能等 -カメラキャリブレーション、マーカーのセーブ機能等がありません。 +カメラキャリブレーション、マーカーのセーブ機能等が相変わらずありません。 今後実装していきます。 @@ -168,6 +175,7 @@ NyARToolkit.sample.qt ・ライセンス GPLv2以降です。詳しくはLICENCE.txtをみてください。 +ソースコード毎のライセンスは、各ソースファイルを参照してください。 diff --git a/sample/java3d/jp/nyatla/nyartoolkit/java3d/sample/NyARJava3D.java b/sample/java3d/jp/nyatla/nyartoolkit/java3d/sample/NyARJava3D.java index 1a83d27..a1786c2 100644 --- a/sample/java3d/jp/nyatla/nyartoolkit/java3d/sample/NyARJava3D.java +++ b/sample/java3d/jp/nyatla/nyartoolkit/java3d/sample/NyARJava3D.java @@ -97,7 +97,7 @@ public class NyARJava3D extends JFrame implements NyARSingleMarkerBehaviorListen //NyARToolkitの準備 NyARCode ar_code = new NyARCode(16, 16); - ar_code.loadFromARFile(CARCODE_FILE); + ar_code.loadARPattFromFile(CARCODE_FILE); ar_param = new J3dNyARParam(); ar_param.loadARParamFromFile(PARAM_FILE); ar_param.changeScreenSize(320, 240); diff --git a/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/NyarToolkitLinkTest.java b/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/NyarToolkitLinkTest.java index 5afdb28..6a1984a 100644 --- a/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/NyarToolkitLinkTest.java +++ b/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/NyarToolkitLinkTest.java @@ -73,7 +73,7 @@ public class NyarToolkitLinkTest extends Frame implements JmfCaptureListener ar_param.loadARParamFromFile(PARAM_FILE); ar_param.changeScreenSize(320, 240); nya = new NyARSingleDetectMarker(ar_param, ar_code, 80.0); - ar_code.loadFromARFile(CARCODE_FILE); + ar_code.loadARPattFromFile(CARCODE_FILE); //キャプチャイメージ用のラスタを準備 raster = new JmfNyARRaster_RGB(320, 240); } diff --git a/sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/JavaSimpleLite.java b/sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/JavaSimpleLite.java index 90820f1..970c0ec 100644 --- a/sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/JavaSimpleLite.java +++ b/sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/JavaSimpleLite.java @@ -156,7 +156,7 @@ public class JavaSimpleLite implements GLEventListener, JmfCaptureListener _ar_param.changeScreenSize(SCREEN_X, SCREEN_Y); _nya = new GLNyARSingleDetectMarker(_ar_param, ar_code, 80.0); _nya.setContinueMode(false);//ここをtrueにすると、transMatContinueモード(History計算)になります。 - ar_code.loadFromARFile(CARCODE_FILE); + ar_code.loadARPattFromFile(CARCODE_FILE); //NyARToolkit用の支援クラス _glnya = new NyARGLUtil(_gl); //GL対応のRGBラスタオブジェクト diff --git a/sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/JavaSimpleLite2.java b/sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/JavaSimpleLite2.java index d756222..8748b45 100644 --- a/sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/JavaSimpleLite2.java +++ b/sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/JavaSimpleLite2.java @@ -160,9 +160,9 @@ public class JavaSimpleLite2 implements GLEventListener, JmfCaptureListener double[] width = new double[] { 80.0, 80.0 }; NyARCode[] ar_codes = new NyARCode[2]; ar_codes[0] = new NyARCode(16, 16); - ar_codes[0].loadFromARFile(CARCODE_FILE1); + ar_codes[0].loadARPattFromFile(CARCODE_FILE1); ar_codes[1] = new NyARCode(16, 16); - ar_codes[1].loadFromARFile(CARCODE_FILE2); + ar_codes[1].loadARPattFromFile(CARCODE_FILE2); _nya = new GLNyARDetectMarker(_ar_param, ar_codes, width, 2); _nya.setContinueMode(false);//ここをtrueにすると、transMatContinueモード(History計算)になります。 //NyARToolkit用の支援クラス diff --git a/sample/qt/jp/nyatla/nyartoolkit/qt/sample/NyarToolkitLinkTest.java b/sample/qt/jp/nyatla/nyartoolkit/qt/sample/NyarToolkitLinkTest.java index aa6870d..79489c5 100644 --- a/sample/qt/jp/nyatla/nyartoolkit/qt/sample/NyarToolkitLinkTest.java +++ b/sample/qt/jp/nyatla/nyartoolkit/qt/sample/NyarToolkitLinkTest.java @@ -67,7 +67,7 @@ public class NyarToolkitLinkTest extends Frame implements QtCaptureListener ar_param.loadARParamFromFile(PARAM_FILE); ar_param.changeScreenSize(320, 240); nya = new NyARSingleDetectMarker(ar_param, ar_code, 80.0); - ar_code.loadFromARFile(CARCODE_FILE); + ar_code.loadARPattFromFile(CARCODE_FILE); //キャプチャイメージ用のラスタを準備 raster = new QtNyARRaster_RGB(320, 240); } diff --git a/src/jp/nyatla/nyartoolkit/core/INyARSquareDetector.java b/src/jp/nyatla/nyartoolkit/core/INyARSquareDetector.java index f46c128..08d73b2 100644 --- a/src/jp/nyatla/nyartoolkit/core/INyARSquareDetector.java +++ b/src/jp/nyatla/nyartoolkit/core/INyARSquareDetector.java @@ -1,3 +1,34 @@ +/* + * PROJECT: NyARToolkit + * -------------------------------------------------------------------------------- + * This work is based on the original ARToolKit developed by + * Hirokazu Kato + * Mark Billinghurst + * HITLab, University of Washington, Seattle + * http://www.hitl.washington.edu/artoolkit/ + * + * The NyARToolkit is Java version ARToolkit class library. + * Copyright (C)2008 R.Iizuka + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this framework; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * For further information please contact. + * http://nyatla.jp/nyatoolkit/ + * + * + */ package jp.nyatla.nyartoolkit.core; import jp.nyatla.nyartoolkit.NyARException; diff --git a/src/jp/nyatla/nyartoolkit/core/NyARCode.java b/src/jp/nyatla/nyartoolkit/core/NyARCode.java index 755c451..886b716 100644 --- a/src/jp/nyatla/nyartoolkit/core/NyARCode.java +++ b/src/jp/nyatla/nyartoolkit/core/NyARCode.java @@ -49,14 +49,11 @@ public class NyARCode private int[][][][] pat;// static int // pat[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3]; - private double[] patpow = new double[4];// static double - // patpow[AR_PATT_NUM_MAX][4]; + private double[] patpow = new double[4];// static double patpow[AR_PATT_NUM_MAX][4]; - private short[][][] patBW;// static int - // patBW[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3]; + private short[][][] patBW;// static int patBW[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3]; - private double[] patpowBW = new double[4];// static double - // patpowBW[AR_PATT_NUM_MAX][4]; + private double[] patpowBW = new double[4];// static double patpowBW[AR_PATT_NUM_MAX][4]; private int width, height; @@ -94,10 +91,8 @@ public class NyARCode { width = i_width; height = i_height; - pat = new int[4][height][width][3];// static int - // pat[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3]; - patBW = new short[4][height][width];// static int - // patBW[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3]; + pat = new int[4][height][width][3];// static int pat[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3]; + patBW = new short[4][height][width];// static int patBW[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3]; } /** @@ -108,10 +103,10 @@ public class NyARCode * @return * @throws Exception */ - public void loadFromARFile(String filename) throws NyARException + public void loadARPattFromFile(String filename) throws NyARException { try { - loadFromARFile(new FileInputStream(filename)); + loadARPatt(new FileInputStream(filename)); } catch (Exception e) { throw new NyARException(e); @@ -123,7 +118,7 @@ public class NyARCode * @param i_stream * @throws NyARException */ - public void loadFromARFile(InputStream i_stream) throws NyARException + public void loadARPatt(InputStream i_stream) throws NyARException { try { StreamTokenizer st = new StreamTokenizer(new InputStreamReader( @@ -135,8 +130,7 @@ public class NyARCode for (int i2 = 0; i2 < height; i2++) { for (int i1 = 0; i1 < width; i1++) { // 数値のみ読み出す - switch (st.nextToken()) {// if( fscanf(fp, "%d", - // &j) != 1 ) { + switch (st.nextToken()) {// if( fscanf(fp, "%d",&j) != 1 ) { case StreamTokenizer.TT_NUMBER: break; default: @@ -147,29 +141,22 @@ public class NyARCode switch (i3) { case 0: pat[h][i2][i1][2] = j; - break;// pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+2] - // = j;break; + break;// pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+2]= j;break; case 1: pat[h][i2][i1][1] = j; - break;// pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+1] - // = j;break; + break;// pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+1]= j;break; case 2: pat[h][i2][i1][0] = j; - break;// pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+0] - // = j;break; + break;// pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+0]= j;break; } - // pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+i3] - // = j; + // pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+i3]= j; if (i3 == 0) { - patBW[h][i2][i1] = j;// patBW[patno][h][i2*Config.AR_PATT_SIZE_X+i1] - // = j; + patBW[h][i2][i1] = j;// patBW[patno][h][i2*Config.AR_PATT_SIZE_X+i1] = j; } else { - patBW[h][i2][i1] += j;// patBW[patno][h][i2*Config.AR_PATT_SIZE_X+i1] - // += j; + patBW[h][i2][i1] += j;// patBW[patno][h][i2*Config.AR_PATT_SIZE_X+i1] += j; } if (i3 == 2) { - patBW[h][i2][i1] /= 3;// patBW[patno][h][i2*Config.AR_PATT_SIZE_X+i1] - // /= 3; + patBW[h][i2][i1] /= 3;// patBW[patno][h][i2*Config.AR_PATT_SIZE_X+i1]/= 3; } l += j; } @@ -179,9 +166,7 @@ public class NyARCode l /= (height * width * 3); int m = 0; - for (int i = 0; i < height; i++) {// for( i = 0; i < - // AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3; - // i++ ) { + for (int i = 0; i < height; i++) {// for( i = 0; i < AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3;i++ ) { for (int i2 = 0; i2 < width; i2++) { for (int i3 = 0; i3 < 3; i3++) { pat[h][i][i2][i3] -= l; diff --git a/src/jp/nyatla/nyartoolkit/core/NyARMat.java b/src/jp/nyatla/nyartoolkit/core/NyARMat.java index c28d0d6..28314f5 100644 --- a/src/jp/nyatla/nyartoolkit/core/NyARMat.java +++ b/src/jp/nyatla/nyartoolkit/core/NyARMat.java @@ -156,9 +156,7 @@ public class NyARMat for (c = 0; c < this.clm; c++) { w = 0.0;// dest.setARELEM0(r, c,0.0); for (i = 0; i < a.clm; i++) { - w += am[r][i] * bm[i][c];// ARELEM0(dest, r, c) += - // ARELEM0(a, r, i) * ARELEM0(b, - // i, c); + w += am[r][i] * bm[i][c];// ARELEM0(dest, r, c) +=ARELEM0(a, r, i) * ARELEM0(b,i, c); } dm[r][c] = w; } @@ -281,8 +279,7 @@ public class NyARMat * @param source * @return */ - public static void matrixTrans(NyARMat dest, NyARMat source) - throws NyARException + public static void matrixTrans(NyARMat dest, NyARMat source) throws NyARException { if (dest.row != source.clm || dest.clm != source.row) { throw new NyARException(); @@ -411,31 +408,23 @@ public class NyARMat public int matrixDisp() throws NyARException { NyARException.trap("未チェックのパス"); - System.out.println(" === matrix (" + row + "," + clm + ") ===");// printf(" - // === - // matrix - // (%d,%d) - // ===\n", - // m->row, - // m->clm); + System.out.println(" === matrix (" + row + "," + clm + ") ===");// printf(" ===matrix (%d,%d) ===\n", m->row, m->clm); for (int r = 0; r < row; r++) {// for(int r = 0; r < m->row; r++) { System.out.print(" |");// printf(" |"); for (int c = 0; c < clm; c++) {// for(int c = 0; c < m->clm; c++) { - System.out.print(" " + m[r][c]);// printf(" %10g", ARELEM0(m, r, - // c)); + System.out.print(" " + m[r][c]);// printf(" %10g", ARELEM0(m, r, c)); } System.out.println(" |");// printf(" |\n"); } - System.out.println(" ======================");// printf(" - // ======================\n"); + System.out.println(" ======================");// printf(" ======================\n"); return 0; } - private final static double PCA_EPS = 1e-6; // #define EPS 1e-6 + private static final double PCA_EPS = 1e-6; // #define EPS 1e-6 - private final static int PCA_MAX_ITER = 100; // #define MAX_ITER 100 + private static final int PCA_MAX_ITER = 100; // #define MAX_ITER 100 - private final static double PCA_VZERO = 1e-16; // #define VZERO 1e-16 + private static final double PCA_VZERO = 1e-16; // #define VZERO 1e-16 /** * static int EX( ARMat *input, ARVec *mean )の代替関数 Optimize:STEP:[144->110] @@ -451,7 +440,7 @@ public class NyARMat int i, i2; lrow = this.row; lclm = this.clm; - double lm[][] = this.m; + double[][] lm = this.m; if (lrow <= 0 || lclm <= 0) { throw new NyARException(); @@ -520,6 +509,7 @@ public class NyARMat im_i[j] -= v[j]; } } + break; } return; } @@ -531,8 +521,7 @@ public class NyARMat * @param output * @throws NyARException */ - private static void PCA_x_by_xt(NyARMat input, NyARMat output) - throws NyARException + private static void PCA_x_by_xt(NyARMat input, NyARMat output) throws NyARException { NyARException.trap("動作未チェック/配列化未チェック"); int row, clm; @@ -556,10 +545,8 @@ public class NyARMat // output->m[j*row+i]; } else { NyARException.trap("未チェックのパス"); - in1 = input.m[i];// input.getRowArray(i);//in1 = - // &(input->m[clm*i]); - in2 = input.m[j];// input.getRowArray(j);//in2 = - // &(input->m[clm*j]); + in1 = input.m[i];// input.getRowArray(i);//in1 = &(input->m[clm*i]); + in2 = input.m[j];// input.getRowArray(j);//in2 = &(input->m[clm*j]); output.m[i][j] = 0;// *out = 0.0; for (int k = 0; k < clm; k++) { output.m[i][j] += (in1[k] * in2[k]);// *out += *(in1++) @@ -579,10 +566,9 @@ public class NyARMat * @param i_output * @throws NyARException */ - private static void PCA_xt_by_x(NyARMat input, NyARMat i_output) - throws NyARException + private static void PCA_xt_by_x(NyARMat input, NyARMat i_output) throws NyARException { - double[] in; + double[] in_; int row, clm; row = input.row; @@ -601,8 +587,8 @@ public class NyARMat } else { w = 0.0;// *out = 0.0; for (k = 0; k < row; k++) { - in = input.m[k];// in=input.getRowArray(k); - w += (in[i] * in[j]);// *out += *in1 * *in2; + in_ = input.m[k];// in=input.getRowArray(k); + w += (in_[i] * in_[j]);// *out += *in1 * *in2; } out_m[i][j] = w; } @@ -691,14 +677,7 @@ public class NyARMat ev_array[k] = c * ev_array[k] - s * y;// ev->v[k]= c *ev->v[k]- s * y; } } - ev_array[k + 1] += s * (c * w - 2 * s * ev_array[k + 1]);// ev->v[k+1] - // += s - // * (c - // * w - // - 2 - // * s - // * - // ev->v[k+1]); + ev_array[k + 1] += s * (c * w - 2 * s * ev_array[k + 1]);// ev->v[k+1]+= s * (c* w- 2* s *ev->v[k+1]); for (int i = 0; i < dim; i++) { x = L_m[k][i];// x = a->m[k*dim+i]; @@ -762,8 +741,7 @@ public class NyARMat * @param ev * @throws NyARException */ - private static void PCA_EV_create(NyARMat input, NyARMat u, NyARMat output, - NyARVec ev) throws NyARException + private static void PCA_EV_create(NyARMat input, NyARMat u, NyARMat output,NyARVec ev) throws NyARException { NyARException.trap("未チェックのパス"); int row, clm; @@ -784,13 +762,13 @@ public class NyARMat if (ev.getClm() != row) {// if( ev->clm != row ){ throw new NyARException(); } - double[][] m, in; + double[][] m, in_; double[] m1, ev_array; double sum, work; NyARException.trap("未チェックのパス"); m = output.m;// m = output->m; - in = input.m; + in_ = input.m; int i; ev_array = ev.getArray(); for (i = 0; i < row; i++) { @@ -806,7 +784,7 @@ public class NyARMat m1 = u.m[i];// m1 = &(u->m[i*row]); // m2=input.getPointer(j);//m2 = &(input->m[j]); for (int k = 0; k < row; k++) { - sum += m1[k] + in[k][j];// sum += *m1 * *m2; + sum += m1[k] + in_[k][j];// sum += *m1 * *m2; // m1.incPtr(); //m1++; // m2.addPtr(clm);//m2 += clm; } @@ -1019,8 +997,7 @@ public class NyARMat return; } - public static NyARMat matrixAllocMul(NyARMat a, NyARMat b) - throws NyARException + public static NyARMat matrixAllocMul(NyARMat a, NyARMat b) throws NyARException { NyARException.trap("未チェックのパス"); NyARMat dest = new NyARMat(a.row, b.clm); @@ -1030,13 +1007,12 @@ public class NyARMat } /* static double mdet(double *ap, int dimen, int rowa) */ - private static double Det_mdet(double[][] ap, int dimen, int rowa) - throws NyARException + private static double Det_mdet(double[][] ap, int dimen, int rowa) throws NyARException { NyARException.trap("動作未チェック/配列化未チェック"); double det = 1.0; double work; - int is = 0; + int is_ = 0; int mmax; for (int k = 0; k < dimen - 1; k++) { @@ -1054,7 +1030,7 @@ public class NyARMat ap[k][j] = ap[mmax][j];// MATRIX(ap, k, j, rowa) =MATRIX(ap, mmax, j, rowa); ap[mmax][j] = work;// MATRIX(ap, mmax, j, rowa) = work; } - is++; + is_++; } for (int i = k + 1; i < dimen; i++) { work = ap[i][k] / ap[k][k];// work = arMatrixDet_MATRIX_get(ap,i, k, rowa) /arMatrixDet_MATRIX_get(ap, k, k,rowa); @@ -1067,7 +1043,7 @@ public class NyARMat for (int i = 0; i < dimen; i++) { det = ap[i][i];// det *= MATRIX(ap, i, i, rowa); } - for (int i = 0; i < is; i++) { + for (int i = 0; i < is_; i++) { det *= -1.0; } return det; diff --git a/src/jp/nyatla/nyartoolkit/core/labeling/NyARLabelingImage.java b/src/jp/nyatla/nyartoolkit/core/labeling/NyARLabelingImage.java index 78b1d44..80655ce 100644 --- a/src/jp/nyatla/nyartoolkit/core/labeling/NyARLabelingImage.java +++ b/src/jp/nyatla/nyartoolkit/core/labeling/NyARLabelingImage.java @@ -127,7 +127,7 @@ public class NyARLabelingImage extends NyARRaster_BasicClass implements INyARLab * 輪郭線の長さを返します。 * @throws NyARException */ - public int getContour(int i_index,int i_array_size,int o_coord_x[],int o_coord_y[]) throws NyARException + public int getContour(int i_index,int i_array_size,int[] o_coord_x,int[] o_coord_y) throws NyARException { final int[] xdir = this._getContour_xdir;// static int xdir[8] = { 0,1, 1, 1, 0,-1,-1,-1}; final int[] ydir = this._getContour_ydir;// static int ydir[8] = {-1,-1,0, 1, 1, 1, 0,-1}; diff --git a/src/jp/nyatla/nyartoolkit/core/param/NyARParam.java b/src/jp/nyatla/nyartoolkit/core/param/NyARParam.java index a1c62c9..4267207 100644 --- a/src/jp/nyatla/nyartoolkit/core/param/NyARParam.java +++ b/src/jp/nyatla/nyartoolkit/core/param/NyARParam.java @@ -146,7 +146,7 @@ public class NyARParam public void saveARParam(OutputStream i_stream)throws Exception { NyARException.trap("未チェックの関数"); - byte buf[] = new byte[SIZE_OF_PARAM_SET]; + byte[] buf = new byte[SIZE_OF_PARAM_SET]; // バッファをラップ ByteBuffer bb = ByteBuffer.wrap(buf); bb.order(ByteOrder.BIG_ENDIAN); diff --git a/src/jp/nyatla/nyartoolkit/core/pickup/NyARColorPatt_O3.java b/src/jp/nyatla/nyartoolkit/core/pickup/NyARColorPatt_O3.java index 8d9b1a8..27711a1 100644 --- a/src/jp/nyatla/nyartoolkit/core/pickup/NyARColorPatt_O3.java +++ b/src/jp/nyatla/nyartoolkit/core/pickup/NyARColorPatt_O3.java @@ -47,7 +47,7 @@ public class NyARColorPatt_O3 implements INyARColorPatt private static final int AR_PATT_SAMPLE_NUM = 64;// #define // AR_PATT_SAMPLE_NUM 64 - private int extpat[][][]; + private int[][][] extpat; private int width; @@ -102,7 +102,7 @@ public class NyARColorPatt_O3 implements INyARColorPatt */ private boolean get_cpara(final NyARIntPoint[] i_vertex, NyARMat o_para)throws NyARException { - int world[][] = this.wk_pickFromRaster_world; + int[][] world = this.wk_pickFromRaster_world; NyARMat a = wk_get_cpara_a;// 次処理で値を設定するので、初期化不要// new NyARMat( 8, 8 ); double[][] a_array = a.getArray(); NyARMat b = wk_get_cpara_b;// 次処理で値を設定するので、初期化不要// new NyARMat( 8, 1 ); @@ -287,7 +287,8 @@ public class NyARColorPatt_O3 implements INyARColorPatt /* wk_pickFromRaster_ext_pat2ワーク変数を初期化する。 */ // int[][][] ext_pat2=wk_pickFromRaster_ext_pat2;//ARUint32 // ext_pat2[AR_PATT_SIZE_Y][AR_PATT_SIZE_X][3]; - int extpat_j[][], extpat_j_i[]; + int[][] extpat_j; + int[] extpat_j_i; // int ext_pat2_j[][],ext_pat2_j_i[]; initValue_wk_pickFromRaster_ext_pat2(L_extpat, L_WIDTH, L_HEIGHT); diff --git a/src/jp/nyatla/nyartoolkit/core/raster/rgb/NyARRgbRaster_BGRA.java b/src/jp/nyatla/nyartoolkit/core/raster/rgb/NyARRgbRaster_BGRA.java index 0922cc9..995eb45 100644 --- a/src/jp/nyatla/nyartoolkit/core/raster/rgb/NyARRgbRaster_BGRA.java +++ b/src/jp/nyatla/nyartoolkit/core/raster/rgb/NyARRgbRaster_BGRA.java @@ -47,24 +47,24 @@ public class NyARRgbRaster_BGRA extends NyARRgbRaster_BasicClass implements INyA public void getPixel(int i_x, int i_y, int[] o_rgb) { - byte[] ref = this._parent._ref_buf; + byte[] ref_buf = this._parent._ref_buf; int bp = (i_x + i_y * this._parent._size.w) * 4; - o_rgb[0] = (ref[bp + 2] & 0xff);// R - o_rgb[1] = (ref[bp + 1] & 0xff);// G - o_rgb[2] = (ref[bp + 0] & 0xff);// B + o_rgb[0] = (ref_buf[bp + 2] & 0xff);// R + o_rgb[1] = (ref_buf[bp + 1] & 0xff);// G + o_rgb[2] = (ref_buf[bp + 0] & 0xff);// B return; } - public void getPixelSet(int[] i_x, int i_y[], int i_num, int[] o_rgb) + public void getPixelSet(int[] i_x, int[] i_y, int i_num, int[] o_rgb) { int width = _parent._size.w; - byte[] ref = _parent._ref_buf; + byte[] ref_buf = _parent._ref_buf; int bp; for (int i = i_num - 1; i >= 0; i--) { bp = (i_x[i] + i_y[i] * width) * 4; - o_rgb[i * 3 + 0] = (ref[bp + 2] & 0xff);// R - o_rgb[i * 3 + 1] = (ref[bp + 1] & 0xff);// G - o_rgb[i * 3 + 2] = (ref[bp + 0] & 0xff);// B + o_rgb[i * 3 + 0] = (ref_buf[bp + 2] & 0xff);// R + o_rgb[i * 3 + 1] = (ref_buf[bp + 1] & 0xff);// G + o_rgb[i * 3 + 2] = (ref_buf[bp + 0] & 0xff);// B } } } diff --git a/src/jp/nyatla/nyartoolkit/core/raster/rgb/NyARRgbRaster_Blank.java b/src/jp/nyatla/nyartoolkit/core/raster/rgb/NyARRgbRaster_Blank.java index 466407e..d7780c4 100644 --- a/src/jp/nyatla/nyartoolkit/core/raster/rgb/NyARRgbRaster_Blank.java +++ b/src/jp/nyatla/nyartoolkit/core/raster/rgb/NyARRgbRaster_Blank.java @@ -52,7 +52,7 @@ public class NyARRgbRaster_Blank extends NyARRgbRaster_BasicClass return; } - public void getPixelSet(int[] i_x, int i_y[], int i_num, int[] o_rgb) + public void getPixelSet(int[] i_x, int[] i_y, int i_num, int[] o_rgb) { for (int i = i_num - 1; i >= 0; i--) { o_rgb[i * 3 + 0] = 0;// R diff --git a/src/jp/nyatla/nyartoolkit/core/rasterreader/INyARRgbPixelReader.java b/src/jp/nyatla/nyartoolkit/core/rasterreader/INyARRgbPixelReader.java index 790e1a2..71b8c9c 100644 --- a/src/jp/nyatla/nyartoolkit/core/rasterreader/INyARRgbPixelReader.java +++ b/src/jp/nyatla/nyartoolkit/core/rasterreader/INyARRgbPixelReader.java @@ -60,5 +60,5 @@ public interface INyARRgbPixelReader * @param i_rgb * ピクセル値を返すバッファ */ - public void getPixelSet(int[] i_x, int i_y[], int i_num, int[] i_rgb) throws NyARException; + public void getPixelSet(int[] i_x, int[] i_y, int i_num, int[] i_rgb) throws NyARException; } diff --git a/src/jp/nyatla/nyartoolkit/core/rasterreader/NyARRgbPixelReader_RGB24.java b/src/jp/nyatla/nyartoolkit/core/rasterreader/NyARRgbPixelReader_RGB24.java index accb57e..86d3dba 100644 --- a/src/jp/nyatla/nyartoolkit/core/rasterreader/NyARRgbPixelReader_RGB24.java +++ b/src/jp/nyatla/nyartoolkit/core/rasterreader/NyARRgbPixelReader_RGB24.java @@ -51,24 +51,24 @@ public class NyARRgbPixelReader_RGB24 implements INyARRgbPixelReader public void getPixel(int i_x, int i_y, int[] o_rgb) { - byte[] ref = this._ref_buf; + byte[] ref_buf = this._ref_buf; int bp = (i_x + i_y * this._size.w) * 3; - o_rgb[0] = (ref[bp + 0] & 0xff);// R - o_rgb[1] = (ref[bp + 1] & 0xff);// G - o_rgb[2] = (ref[bp + 2] & 0xff);// B + o_rgb[0] = (ref_buf[bp + 0] & 0xff);// R + o_rgb[1] = (ref_buf[bp + 1] & 0xff);// G + o_rgb[2] = (ref_buf[bp + 2] & 0xff);// B return; } - public void getPixelSet(int[] i_x, int i_y[], int i_num, int[] o_rgb) + public void getPixelSet(int[] i_x, int[] i_y, int i_num, int[] o_rgb) { int width = this._size.w; - byte[] ref = this._ref_buf; + byte[] ref_buf = this._ref_buf; int bp; for (int i = i_num - 1; i >= 0; i--) { bp = (i_x[i] + i_y[i] * width) * 3; - o_rgb[i * 3 + 0] = (ref[bp + 0] & 0xff);// R - o_rgb[i * 3 + 1] = (ref[bp + 1] & 0xff);// G - o_rgb[i * 3 + 2] = (ref[bp + 2] & 0xff);// B + o_rgb[i * 3 + 0] = (ref_buf[bp + 0] & 0xff);// R + o_rgb[i * 3 + 1] = (ref_buf[bp + 1] & 0xff);// G + o_rgb[i * 3 + 2] = (ref_buf[bp + 2] & 0xff);// B } } } \ No newline at end of file diff --git a/src/jp/nyatla/nyartoolkit/core/transmat/NyARTransMat.java b/src/jp/nyatla/nyartoolkit/core/transmat/NyARTransMat.java index e32aeb4..067818f 100644 --- a/src/jp/nyatla/nyartoolkit/core/transmat/NyARTransMat.java +++ b/src/jp/nyatla/nyartoolkit/core/transmat/NyARTransMat.java @@ -98,7 +98,7 @@ public class NyARTransMat implements INyARTransMat private final NyARDoublePoint2d[] __transMat_sqvertex_ref = new NyARDoublePoint2d[4]; private final NyARLinear[] __transMat_linear_ref=new NyARLinear[4]; - final NyARDoublePoint3d __transMat_trans=new NyARDoublePoint3d(); + private final NyARDoublePoint3d __transMat_trans=new NyARDoublePoint3d(); /** * double arGetTransMat( ARMarkerInfo *marker_info,double center[2], double width, double conv[3][4] ) * diff --git a/src/jp/nyatla/nyartoolkit/core/transmat/NyARTransOffset.java b/src/jp/nyatla/nyartoolkit/core/transmat/NyARTransOffset.java index bfd80f4..bc776fb 100644 --- a/src/jp/nyatla/nyartoolkit/core/transmat/NyARTransOffset.java +++ b/src/jp/nyatla/nyartoolkit/core/transmat/NyARTransOffset.java @@ -68,6 +68,6 @@ final public class NyARTransOffset this.point.x=-i_center.x; this.point.y=-i_center.y; this.point.z=0; - + return; } } diff --git a/src/jp/nyatla/nyartoolkit/core/transmat/optimize/NyARRotTransOptimize.java b/src/jp/nyatla/nyartoolkit/core/transmat/optimize/NyARRotTransOptimize.java index 6587e79..27aff2f 100644 --- a/src/jp/nyatla/nyartoolkit/core/transmat/optimize/NyARRotTransOptimize.java +++ b/src/jp/nyatla/nyartoolkit/core/transmat/optimize/NyARRotTransOptimize.java @@ -89,7 +89,7 @@ public class NyARRotTransOptimize implements INyARRotTransOptimize * @return * @throws NyARException */ - private double modifyMatrix(NyARRotMatrix io_rot,NyARDoublePoint3d trans, NyARDoublePoint3d[] i_vertex3d, NyARDoublePoint2d i_vertex2d[]) throws NyARException + private double modifyMatrix(NyARRotMatrix io_rot,NyARDoublePoint3d trans, NyARDoublePoint3d[] i_vertex3d, NyARDoublePoint2d[] i_vertex2d) throws NyARException { double factor; double a2, b2, c2; diff --git a/src/jp/nyatla/nyartoolkit/core2/rasteranalyzer/NyARRasterDetector_QrCodeEdge.java b/src/jp/nyatla/nyartoolkit/core2/rasteranalyzer/NyARRasterDetector_QrCodeEdge.java index 4945175..3d06011 100644 --- a/src/jp/nyatla/nyartoolkit/core2/rasteranalyzer/NyARRasterDetector_QrCodeEdge.java +++ b/src/jp/nyatla/nyartoolkit/core2/rasteranalyzer/NyARRasterDetector_QrCodeEdge.java @@ -37,6 +37,11 @@ import jp.nyatla.nyartoolkit.core.types.stack.*; import jp.nyatla.nyartoolkit.core.types.*; import jp.nyatla.nyartoolkit.core.rasterreader.*; +/** + * QRコードの4頂点候補を探そうとするクラス。 + * 未完成 + * + */ public class NyARRasterDetector_QrCodeEdge { private NyARIntRectStack _result; diff --git a/src/jp/nyatla/nyartoolkit/sample/RawFileTest.java b/src/jp/nyatla/nyartoolkit/sample/RawFileTest.java index ee93b66..55720ec 100644 --- a/src/jp/nyatla/nyartoolkit/sample/RawFileTest.java +++ b/src/jp/nyatla/nyartoolkit/sample/RawFileTest.java @@ -68,7 +68,7 @@ public class RawFileTest // AR用のパターンコードを読み出し NyARCode code = new NyARCode(16, 16); - code.loadFromARFile(code_file); + code.loadARPattFromFile(code_file); // 試験イメージの読み出し(320x240 BGRAのRAWデータ) File f = new File(data_file); @@ -82,14 +82,14 @@ public class RawFileTest NyARSingleDetectMarker ar = new NyARSingleDetectMarker(ap, code, 80.0); NyARTransMatResult result_mat = new NyARTransMatResult(); ar.setContinueMode(false); - ar.detectMarkerLite(ra, 110); + ar.detectMarkerLite(ra, 100); ar.getTransmationMatrix(result_mat); // マーカーを検出 Date d2 = new Date(); - for (int i = 0; i < 10000; i++) { + for (int i = 0; i < 1000; i++) { // 変換行列を取得 - ar.detectMarkerLite(ra, 110); + ar.detectMarkerLite(ra, 100); ar.getTransmationMatrix(result_mat); } Date d = new Date(); diff --git a/test/jp/nyatla/nyartoolkit/dev/LabelingCamera.java b/test/jp/nyatla/nyartoolkit/dev/LabelingCamera.java index 9221943..d22fdbf 100644 --- a/test/jp/nyatla/nyartoolkit/dev/LabelingCamera.java +++ b/test/jp/nyatla/nyartoolkit/dev/LabelingCamera.java @@ -1,9 +1,6 @@ -/** - * VFM+ARToolkitテストプログラム - * カメラから取り込んだデータからマーカーを検出して、一致度と変換行列を表示します。 - * (c)2008 A虎@nyatla.jp - * airmail(at)ebony.plala.or.jp - * http://nyatla.jp/ +/* このソースは実験用のソースです。 + * 動いたり動かなかったりします。 + * */ package jp.nyatla.nyartoolkit.dev; @@ -19,10 +16,8 @@ import java.awt.*; import jp.nyatla.nyartoolkit.core.labeling.*; -import jp.nyatla.nyartoolkit.core.labeling.types.*; import jp.nyatla.nyartoolkit.core.raster.*; import jp.nyatla.nyartoolkit.core.rasterfilter.*; -import jp.nyatla.nyartoolkit.core.rasterfilter.rgb2gs.*; import jp.nyatla.nyartoolkit.core2.rasteranalyzer.*; import jp.nyatla.nyartoolkit.core2.rasteranalyzer.threshold.*; import jp.nyatla.nyartoolkit.core2.rasterfilter.gs2bin.*; diff --git a/test/jp/nyatla/nyartoolkit/dev/LabelingTest.java b/test/jp/nyatla/nyartoolkit/dev/LabelingTest.java index 3cf02eb..b9b7c28 100644 --- a/test/jp/nyatla/nyartoolkit/dev/LabelingTest.java +++ b/test/jp/nyatla/nyartoolkit/dev/LabelingTest.java @@ -1,3 +1,7 @@ +/* このソースは実験用のソースです。 + * 動いたり動かなかったりします。 + * + */ package jp.nyatla.nyartoolkit.dev; import java.awt.Frame; @@ -7,7 +11,7 @@ import java.io.FileInputStream; import jp.nyatla.nyartoolkit.core.raster.*; import jp.nyatla.nyartoolkit.core.raster.rgb.NyARRgbRaster_BGRA; import jp.nyatla.nyartoolkit.core.labeling.*; -import jp.nyatla.nyartoolkit.core.labeling.types.*; + import jp.nyatla.nyartoolkit.core2.rasteranalyzer.*; import jp.nyatla.utils.j2se.*; -- 2.11.0