-ARToolkit Java class library NyARToolkit.\r
+ARToolKit Java class library NyARToolkit.\r
Copyright (C)2008 R.Iizuka\r
\r
-version 1.3.0.\r
+version 2.0.0\r
\r
-http://nyatla.jp/\r
+http://nyatla.jp/nyartoolkit/\r
airmail(at)ebony.plala.or.jp\r
--------------------------------------------------\r
\r
\r
\r
\r
-・NyARToolkit\r
+・NyARToolkit/2.0\r
+\r
+NyARToolkitは、Pure Javaで実装したARToolKitクラスライブラリです。\r
+\r
+ARToolKit 2.72.1をベースに構築されています。\r
+\r
+NyARToolkit/1.xと比較し、構造的な最適化がされ、可読性が向上しています。\r
\r
-NyARToolkitは、nativeなコードを一切使用しない、Pure Javaのみで\r
-構成されたARToolkitクラスライブラリです。\r
\r
-ARToolkit 2.72.1をベースに構築されています。\r
\r
J2SEでのみ動作を確認しました。\r
J2MEやMIDP2.0にはそのうち対応します。\r
\r
・NyARToolkitの特徴\r
\r
- -ARToolKitの処理関数を全てクラスベースで再構築してあります。\r
+ -ARToolKitと同等な処理シーケンスを、クラスベースで再構築してあります。\r
+\r
+ -構造的な最適化がされており、ARToolKitと比較して可読性に優れています。\r
\r
-座標変換の演算性能が1.5倍ほど高速です。(JIT有効時)複数マーカー取り扱い時は、\r
オリジナルよりも良い成績が得られます。\r
\r
\r
\r
+\r
+\r
・構成\r
\r
+-----------------------------------------------+\r
\r
・足りない機能等\r
\r
-カメラキャリブレーション、マーカーのセーブ機能等がありません。\r
+カメラキャリブレーション、マーカーのセーブ機能等が相変わらずありません。\r
今後実装していきます。\r
\r
\r
\r
・ライセンス\r
GPLv2以降です。詳しくはLICENCE.txtをみてください。\r
+ソースコード毎のライセンスは、各ソースファイルを参照してください。\r
\r
\r
\r
\r
//NyARToolkitの準備\r
NyARCode ar_code = new NyARCode(16, 16);\r
- ar_code.loadFromARFile(CARCODE_FILE);\r
+ ar_code.loadARPattFromFile(CARCODE_FILE);\r
ar_param = new J3dNyARParam();\r
ar_param.loadARParamFromFile(PARAM_FILE);\r
ar_param.changeScreenSize(320, 240);\r
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);
}
_ar_param.changeScreenSize(SCREEN_X, SCREEN_Y);\r
_nya = new GLNyARSingleDetectMarker(_ar_param, ar_code, 80.0);\r
_nya.setContinueMode(false);//ここをtrueにすると、transMatContinueモード(History計算)になります。\r
- ar_code.loadFromARFile(CARCODE_FILE);\r
+ ar_code.loadARPattFromFile(CARCODE_FILE);\r
//NyARToolkit用の支援クラス\r
_glnya = new NyARGLUtil(_gl);\r
//GL対応のRGBラスタオブジェクト\r
double[] width = new double[] { 80.0, 80.0 };\r
NyARCode[] ar_codes = new NyARCode[2];\r
ar_codes[0] = new NyARCode(16, 16);\r
- ar_codes[0].loadFromARFile(CARCODE_FILE1);\r
+ ar_codes[0].loadARPattFromFile(CARCODE_FILE1);\r
ar_codes[1] = new NyARCode(16, 16);\r
- ar_codes[1].loadFromARFile(CARCODE_FILE2);\r
+ ar_codes[1].loadARPattFromFile(CARCODE_FILE2);\r
_nya = new GLNyARDetectMarker(_ar_param, ar_codes, width, 2);\r
_nya.setContinueMode(false);//ここをtrueにすると、transMatContinueモード(History計算)になります。\r
//NyARToolkit用の支援クラス\r
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);
}
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * This work is based on the original ARToolKit developed by\r
+ * Hirokazu Kato\r
+ * Mark Billinghurst\r
+ * HITLab, University of Washington, Seattle\r
+ * http://www.hitl.washington.edu/artoolkit/\r
+ *\r
+ * The NyARToolkit is Java version ARToolkit class library.\r
+ * Copyright (C)2008 R.Iizuka\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this framework; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+ * \r
+ * For further information please contact.\r
+ * http://nyatla.jp/nyatoolkit/\r
+ * <airmail(at)ebony.plala.or.jp>\r
+ * \r
+ */\r
package jp.nyatla.nyartoolkit.core;\r
\r
import jp.nyatla.nyartoolkit.NyARException;\r
private int[][][][] pat;// static int\r
// pat[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3];\r
\r
- private double[] patpow = new double[4];// static double\r
- // patpow[AR_PATT_NUM_MAX][4];\r
+ private double[] patpow = new double[4];// static double patpow[AR_PATT_NUM_MAX][4];\r
\r
- private short[][][] patBW;// static int\r
- // patBW[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3];\r
+ private short[][][] patBW;// static int patBW[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3];\r
\r
- private double[] patpowBW = new double[4];// static double\r
- // patpowBW[AR_PATT_NUM_MAX][4];\r
+ private double[] patpowBW = new double[4];// static double patpowBW[AR_PATT_NUM_MAX][4];\r
\r
private int width, height;\r
\r
{\r
width = i_width;\r
height = i_height;\r
- pat = new int[4][height][width][3];// static int\r
- // pat[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3];\r
- patBW = new short[4][height][width];// static int\r
- // patBW[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3];\r
+ pat = new int[4][height][width][3];// static int pat[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3];\r
+ patBW = new short[4][height][width];// static int patBW[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3];\r
}\r
\r
/**\r
* @return\r
* @throws Exception\r
*/\r
- public void loadFromARFile(String filename) throws NyARException\r
+ public void loadARPattFromFile(String filename) throws NyARException\r
{\r
try {\r
- loadFromARFile(new FileInputStream(filename));\r
+ loadARPatt(new FileInputStream(filename));\r
\r
} catch (Exception e) {\r
throw new NyARException(e);\r
* @param i_stream\r
* @throws NyARException\r
*/\r
- public void loadFromARFile(InputStream i_stream) throws NyARException\r
+ public void loadARPatt(InputStream i_stream) throws NyARException\r
{\r
try {\r
StreamTokenizer st = new StreamTokenizer(new InputStreamReader(\r
for (int i2 = 0; i2 < height; i2++) {\r
for (int i1 = 0; i1 < width; i1++) {\r
// 数値のみ読み出す\r
- switch (st.nextToken()) {// if( fscanf(fp, "%d",\r
- // &j) != 1 ) {\r
+ switch (st.nextToken()) {// if( fscanf(fp, "%d",&j) != 1 ) {\r
case StreamTokenizer.TT_NUMBER:\r
break;\r
default:\r
switch (i3) {\r
case 0:\r
pat[h][i2][i1][2] = j;\r
- break;// pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+2]\r
- // = j;break;\r
+ break;// pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+2]= j;break;\r
case 1:\r
pat[h][i2][i1][1] = j;\r
- break;// pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+1]\r
- // = j;break;\r
+ break;// pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+1]= j;break;\r
case 2:\r
pat[h][i2][i1][0] = j;\r
- break;// pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+0]\r
- // = j;break;\r
+ break;// pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+0]= j;break;\r
}\r
- // pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+i3]\r
- // = j;\r
+ // pat[patno][h][(i2*Config.AR_PATT_SIZE_X+i1)*3+i3]= j;\r
if (i3 == 0) {\r
- patBW[h][i2][i1] = j;// patBW[patno][h][i2*Config.AR_PATT_SIZE_X+i1]\r
- // = j;\r
+ patBW[h][i2][i1] = j;// patBW[patno][h][i2*Config.AR_PATT_SIZE_X+i1] = j;\r
} else {\r
- patBW[h][i2][i1] += j;// patBW[patno][h][i2*Config.AR_PATT_SIZE_X+i1]\r
- // += j;\r
+ patBW[h][i2][i1] += j;// patBW[patno][h][i2*Config.AR_PATT_SIZE_X+i1] += j;\r
}\r
if (i3 == 2) {\r
- patBW[h][i2][i1] /= 3;// patBW[patno][h][i2*Config.AR_PATT_SIZE_X+i1]\r
- // /= 3;\r
+ patBW[h][i2][i1] /= 3;// patBW[patno][h][i2*Config.AR_PATT_SIZE_X+i1]/= 3;\r
}\r
l += j;\r
}\r
l /= (height * width * 3);\r
\r
int m = 0;\r
- for (int i = 0; i < height; i++) {// for( i = 0; i <\r
- // AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3;\r
- // i++ ) {\r
+ for (int i = 0; i < height; i++) {// for( i = 0; i < AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3;i++ ) {\r
for (int i2 = 0; i2 < width; i2++) {\r
for (int i3 = 0; i3 < 3; i3++) {\r
pat[h][i][i2][i3] -= l;\r
for (c = 0; c < this.clm; c++) {\r
w = 0.0;// dest.setARELEM0(r, c,0.0);\r
for (i = 0; i < a.clm; i++) {\r
- w += am[r][i] * bm[i][c];// ARELEM0(dest, r, c) +=\r
- // ARELEM0(a, r, i) * ARELEM0(b,\r
- // i, c);\r
+ w += am[r][i] * bm[i][c];// ARELEM0(dest, r, c) +=ARELEM0(a, r, i) * ARELEM0(b,i, c);\r
}\r
dm[r][c] = w;\r
}\r
* @param source\r
* @return\r
*/\r
- public static void matrixTrans(NyARMat dest, NyARMat source)\r
- throws NyARException\r
+ public static void matrixTrans(NyARMat dest, NyARMat source) throws NyARException\r
{\r
if (dest.row != source.clm || dest.clm != source.row) {\r
throw new NyARException();\r
public int matrixDisp() throws NyARException\r
{\r
NyARException.trap("未チェックのパス");\r
- System.out.println(" === matrix (" + row + "," + clm + ") ===");// printf("\r
- // ===\r
- // matrix\r
- // (%d,%d)\r
- // ===\n",\r
- // m->row,\r
- // m->clm);\r
+ System.out.println(" === matrix (" + row + "," + clm + ") ===");// printf(" ===matrix (%d,%d) ===\n", m->row, m->clm);\r
for (int r = 0; r < row; r++) {// for(int r = 0; r < m->row; r++) {\r
System.out.print(" |");// printf(" |");\r
for (int c = 0; c < clm; c++) {// for(int c = 0; c < m->clm; c++) {\r
- System.out.print(" " + m[r][c]);// printf(" %10g", ARELEM0(m, r,\r
- // c));\r
+ System.out.print(" " + m[r][c]);// printf(" %10g", ARELEM0(m, r, c));\r
}\r
System.out.println(" |");// printf(" |\n");\r
}\r
- System.out.println(" ======================");// printf("\r
- // ======================\n");\r
+ System.out.println(" ======================");// printf(" ======================\n");\r
return 0;\r
}\r
\r
- private final static double PCA_EPS = 1e-6; // #define EPS 1e-6\r
+ private static final double PCA_EPS = 1e-6; // #define EPS 1e-6\r
\r
- private final static int PCA_MAX_ITER = 100; // #define MAX_ITER 100\r
+ private static final int PCA_MAX_ITER = 100; // #define MAX_ITER 100\r
\r
- private final static double PCA_VZERO = 1e-16; // #define VZERO 1e-16\r
+ private static final double PCA_VZERO = 1e-16; // #define VZERO 1e-16\r
\r
/**\r
* static int EX( ARMat *input, ARVec *mean )の代替関数 Optimize:STEP:[144->110]\r
int i, i2;\r
lrow = this.row;\r
lclm = this.clm;\r
- double lm[][] = this.m;\r
+ double[][] lm = this.m;\r
\r
if (lrow <= 0 || lclm <= 0) {\r
throw new NyARException();\r
im_i[j] -= v[j];\r
}\r
}\r
+ break;\r
}\r
return;\r
}\r
* @param output\r
* @throws NyARException\r
*/\r
- private static void PCA_x_by_xt(NyARMat input, NyARMat output)\r
- throws NyARException\r
+ private static void PCA_x_by_xt(NyARMat input, NyARMat output) throws NyARException\r
{\r
NyARException.trap("動作未チェック/配列化未チェック");\r
int row, clm;\r
// output->m[j*row+i];\r
} else {\r
NyARException.trap("未チェックのパス");\r
- in1 = input.m[i];// input.getRowArray(i);//in1 =\r
- // &(input->m[clm*i]);\r
- in2 = input.m[j];// input.getRowArray(j);//in2 =\r
- // &(input->m[clm*j]);\r
+ in1 = input.m[i];// input.getRowArray(i);//in1 = &(input->m[clm*i]);\r
+ in2 = input.m[j];// input.getRowArray(j);//in2 = &(input->m[clm*j]);\r
output.m[i][j] = 0;// *out = 0.0;\r
for (int k = 0; k < clm; k++) {\r
output.m[i][j] += (in1[k] * in2[k]);// *out += *(in1++)\r
* @param i_output\r
* @throws NyARException\r
*/\r
- private static void PCA_xt_by_x(NyARMat input, NyARMat i_output)\r
- throws NyARException\r
+ private static void PCA_xt_by_x(NyARMat input, NyARMat i_output) throws NyARException\r
{\r
- double[] in;\r
+ double[] in_;\r
int row, clm;\r
\r
row = input.row;\r
} else {\r
w = 0.0;// *out = 0.0;\r
for (k = 0; k < row; k++) {\r
- in = input.m[k];// in=input.getRowArray(k);\r
- w += (in[i] * in[j]);// *out += *in1 * *in2;\r
+ in_ = input.m[k];// in=input.getRowArray(k);\r
+ w += (in_[i] * in_[j]);// *out += *in1 * *in2;\r
}\r
out_m[i][j] = w;\r
}\r
ev_array[k] = c * ev_array[k] - s * y;// ev->v[k]= c *ev->v[k]- s * y;\r
}\r
}\r
- ev_array[k + 1] += s * (c * w - 2 * s * ev_array[k + 1]);// ev->v[k+1]\r
- // += s\r
- // * (c\r
- // * w\r
- // - 2\r
- // * s\r
- // *\r
- // ev->v[k+1]);\r
+ 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]);\r
\r
for (int i = 0; i < dim; i++) {\r
x = L_m[k][i];// x = a->m[k*dim+i];\r
* @param ev\r
* @throws NyARException\r
*/\r
- private static void PCA_EV_create(NyARMat input, NyARMat u, NyARMat output,\r
- NyARVec ev) throws NyARException\r
+ private static void PCA_EV_create(NyARMat input, NyARMat u, NyARMat output,NyARVec ev) throws NyARException\r
{\r
NyARException.trap("未チェックのパス");\r
int row, clm;\r
if (ev.getClm() != row) {// if( ev->clm != row ){\r
throw new NyARException();\r
}\r
- double[][] m, in;\r
+ double[][] m, in_;\r
double[] m1, ev_array;\r
double sum, work;\r
\r
NyARException.trap("未チェックのパス");\r
m = output.m;// m = output->m;\r
- in = input.m;\r
+ in_ = input.m;\r
int i;\r
ev_array = ev.getArray();\r
for (i = 0; i < row; i++) {\r
m1 = u.m[i];// m1 = &(u->m[i*row]);\r
// m2=input.getPointer(j);//m2 = &(input->m[j]);\r
for (int k = 0; k < row; k++) {\r
- sum += m1[k] + in[k][j];// sum += *m1 * *m2;\r
+ sum += m1[k] + in_[k][j];// sum += *m1 * *m2;\r
// m1.incPtr(); //m1++;\r
// m2.addPtr(clm);//m2 += clm;\r
}\r
return;\r
}\r
\r
- public static NyARMat matrixAllocMul(NyARMat a, NyARMat b)\r
- throws NyARException\r
+ public static NyARMat matrixAllocMul(NyARMat a, NyARMat b) throws NyARException\r
{\r
NyARException.trap("未チェックのパス");\r
NyARMat dest = new NyARMat(a.row, b.clm);\r
}\r
\r
/* static double mdet(double *ap, int dimen, int rowa) */\r
- private static double Det_mdet(double[][] ap, int dimen, int rowa)\r
- throws NyARException\r
+ private static double Det_mdet(double[][] ap, int dimen, int rowa) throws NyARException\r
{\r
NyARException.trap("動作未チェック/配列化未チェック");\r
double det = 1.0;\r
double work;\r
- int is = 0;\r
+ int is_ = 0;\r
int mmax;\r
\r
for (int k = 0; k < dimen - 1; k++) {\r
ap[k][j] = ap[mmax][j];// MATRIX(ap, k, j, rowa) =MATRIX(ap, mmax, j, rowa);\r
ap[mmax][j] = work;// MATRIX(ap, mmax, j, rowa) = work;\r
}\r
- is++;\r
+ is_++;\r
}\r
for (int i = k + 1; i < dimen; i++) {\r
work = ap[i][k] / ap[k][k];// work = arMatrixDet_MATRIX_get(ap,i, k, rowa) /arMatrixDet_MATRIX_get(ap, k, k,rowa);\r
for (int i = 0; i < dimen; i++) {\r
det = ap[i][i];// det *= MATRIX(ap, i, i, rowa);\r
}\r
- for (int i = 0; i < is; i++) {\r
+ for (int i = 0; i < is_; i++) {\r
det *= -1.0;\r
}\r
return det;\r
* 輪郭線の長さを返します。\r
* @throws NyARException\r
*/\r
- public int getContour(int i_index,int i_array_size,int o_coord_x[],int o_coord_y[]) throws NyARException\r
+ public int getContour(int i_index,int i_array_size,int[] o_coord_x,int[] o_coord_y) throws NyARException\r
{\r
final int[] xdir = this._getContour_xdir;// static int xdir[8] = { 0,1, 1, 1, 0,-1,-1,-1};\r
final int[] ydir = this._getContour_ydir;// static int ydir[8] = {-1,-1,0, 1, 1, 1, 0,-1};\r
public void saveARParam(OutputStream i_stream)throws Exception\r
{\r
NyARException.trap("未チェックの関数");\r
- byte buf[] = new byte[SIZE_OF_PARAM_SET];\r
+ byte[] buf = new byte[SIZE_OF_PARAM_SET];\r
// バッファをラップ\r
ByteBuffer bb = ByteBuffer.wrap(buf);\r
bb.order(ByteOrder.BIG_ENDIAN);\r
private static final int AR_PATT_SAMPLE_NUM = 64;// #define\r
// AR_PATT_SAMPLE_NUM 64\r
\r
- private int extpat[][][];\r
+ private int[][][] extpat;\r
\r
private int width;\r
\r
*/\r
private boolean get_cpara(final NyARIntPoint[] i_vertex, NyARMat o_para)throws NyARException\r
{\r
- int world[][] = this.wk_pickFromRaster_world;\r
+ int[][] world = this.wk_pickFromRaster_world;\r
NyARMat a = wk_get_cpara_a;// 次処理で値を設定するので、初期化不要// new NyARMat( 8, 8 );\r
double[][] a_array = a.getArray();\r
NyARMat b = wk_get_cpara_b;// 次処理で値を設定するので、初期化不要// new NyARMat( 8, 1 );\r
/* wk_pickFromRaster_ext_pat2ワーク変数を初期化する。 */\r
// int[][][] ext_pat2=wk_pickFromRaster_ext_pat2;//ARUint32\r
// ext_pat2[AR_PATT_SIZE_Y][AR_PATT_SIZE_X][3];\r
- int extpat_j[][], extpat_j_i[];\r
+ int[][] extpat_j;\r
+ int[] extpat_j_i;\r
// int ext_pat2_j[][],ext_pat2_j_i[];\r
\r
initValue_wk_pickFromRaster_ext_pat2(L_extpat, L_WIDTH, L_HEIGHT);\r
\r
public void getPixel(int i_x, int i_y, int[] o_rgb)\r
{\r
- byte[] ref = this._parent._ref_buf;\r
+ byte[] ref_buf = this._parent._ref_buf;\r
int bp = (i_x + i_y * this._parent._size.w) * 4;\r
- o_rgb[0] = (ref[bp + 2] & 0xff);// R\r
- o_rgb[1] = (ref[bp + 1] & 0xff);// G\r
- o_rgb[2] = (ref[bp + 0] & 0xff);// B\r
+ o_rgb[0] = (ref_buf[bp + 2] & 0xff);// R\r
+ o_rgb[1] = (ref_buf[bp + 1] & 0xff);// G\r
+ o_rgb[2] = (ref_buf[bp + 0] & 0xff);// B\r
return;\r
}\r
\r
- public void getPixelSet(int[] i_x, int i_y[], int i_num, int[] o_rgb)\r
+ public void getPixelSet(int[] i_x, int[] i_y, int i_num, int[] o_rgb)\r
{\r
int width = _parent._size.w;\r
- byte[] ref = _parent._ref_buf;\r
+ byte[] ref_buf = _parent._ref_buf;\r
int bp;\r
for (int i = i_num - 1; i >= 0; i--) {\r
bp = (i_x[i] + i_y[i] * width) * 4;\r
- o_rgb[i * 3 + 0] = (ref[bp + 2] & 0xff);// R\r
- o_rgb[i * 3 + 1] = (ref[bp + 1] & 0xff);// G\r
- o_rgb[i * 3 + 2] = (ref[bp + 0] & 0xff);// B\r
+ o_rgb[i * 3 + 0] = (ref_buf[bp + 2] & 0xff);// R\r
+ o_rgb[i * 3 + 1] = (ref_buf[bp + 1] & 0xff);// G\r
+ o_rgb[i * 3 + 2] = (ref_buf[bp + 0] & 0xff);// B\r
}\r
}\r
}\r
return;\r
}\r
\r
- public void getPixelSet(int[] i_x, int i_y[], int i_num, int[] o_rgb)\r
+ public void getPixelSet(int[] i_x, int[] i_y, int i_num, int[] o_rgb)\r
{\r
for (int i = i_num - 1; i >= 0; i--) {\r
o_rgb[i * 3 + 0] = 0;// R\r
* @param i_rgb\r
* ピクセル値を返すバッファ\r
*/\r
- public void getPixelSet(int[] i_x, int i_y[], int i_num, int[] i_rgb) throws NyARException;\r
+ public void getPixelSet(int[] i_x, int[] i_y, int i_num, int[] i_rgb) throws NyARException;\r
}\r
\r
public void getPixel(int i_x, int i_y, int[] o_rgb)\r
{\r
- byte[] ref = this._ref_buf;\r
+ byte[] ref_buf = this._ref_buf;\r
int bp = (i_x + i_y * this._size.w) * 3;\r
- o_rgb[0] = (ref[bp + 0] & 0xff);// R\r
- o_rgb[1] = (ref[bp + 1] & 0xff);// G\r
- o_rgb[2] = (ref[bp + 2] & 0xff);// B\r
+ o_rgb[0] = (ref_buf[bp + 0] & 0xff);// R\r
+ o_rgb[1] = (ref_buf[bp + 1] & 0xff);// G\r
+ o_rgb[2] = (ref_buf[bp + 2] & 0xff);// B\r
return;\r
}\r
\r
- public void getPixelSet(int[] i_x, int i_y[], int i_num, int[] o_rgb)\r
+ public void getPixelSet(int[] i_x, int[] i_y, int i_num, int[] o_rgb)\r
{\r
int width = this._size.w;\r
- byte[] ref = this._ref_buf;\r
+ byte[] ref_buf = this._ref_buf;\r
int bp;\r
for (int i = i_num - 1; i >= 0; i--) {\r
bp = (i_x[i] + i_y[i] * width) * 3;\r
- o_rgb[i * 3 + 0] = (ref[bp + 0] & 0xff);// R\r
- o_rgb[i * 3 + 1] = (ref[bp + 1] & 0xff);// G\r
- o_rgb[i * 3 + 2] = (ref[bp + 2] & 0xff);// B\r
+ o_rgb[i * 3 + 0] = (ref_buf[bp + 0] & 0xff);// R\r
+ o_rgb[i * 3 + 1] = (ref_buf[bp + 1] & 0xff);// G\r
+ o_rgb[i * 3 + 2] = (ref_buf[bp + 2] & 0xff);// B\r
}\r
}\r
}
\ No newline at end of file
\r
private final NyARDoublePoint2d[] __transMat_sqvertex_ref = new NyARDoublePoint2d[4];\r
private final NyARLinear[] __transMat_linear_ref=new NyARLinear[4];\r
- final NyARDoublePoint3d __transMat_trans=new NyARDoublePoint3d();\r
+ private final NyARDoublePoint3d __transMat_trans=new NyARDoublePoint3d();\r
/**\r
* double arGetTransMat( ARMarkerInfo *marker_info,double center[2], double width, double conv[3][4] )\r
* \r
this.point.x=-i_center.x;\r
this.point.y=-i_center.y;\r
this.point.z=0;\r
-\r
+ return;\r
}\r
}\r
* @return\r
* @throws NyARException\r
*/\r
- private double modifyMatrix(NyARRotMatrix io_rot,NyARDoublePoint3d trans, NyARDoublePoint3d[] i_vertex3d, NyARDoublePoint2d i_vertex2d[]) throws NyARException\r
+ private double modifyMatrix(NyARRotMatrix io_rot,NyARDoublePoint3d trans, NyARDoublePoint3d[] i_vertex3d, NyARDoublePoint2d[] i_vertex2d) throws NyARException\r
{\r
double factor;\r
double a2, b2, c2;\r
import jp.nyatla.nyartoolkit.core.types.*;\r
import jp.nyatla.nyartoolkit.core.rasterreader.*;\r
\r
+/**\r
+ * QRコードの4頂点候補を探そうとするクラス。\r
+ * 未完成\r
+ *\r
+ */\r
public class NyARRasterDetector_QrCodeEdge\r
{\r
private NyARIntRectStack _result;\r
\r
// AR用のパターンコードを読み出し\r
NyARCode code = new NyARCode(16, 16);\r
- code.loadFromARFile(code_file);\r
+ code.loadARPattFromFile(code_file);\r
\r
// 試験イメージの読み出し(320x240 BGRAのRAWデータ)\r
File f = new File(data_file);\r
NyARSingleDetectMarker ar = new NyARSingleDetectMarker(ap, code, 80.0);\r
NyARTransMatResult result_mat = new NyARTransMatResult();\r
ar.setContinueMode(false);\r
- ar.detectMarkerLite(ra, 110);\r
+ ar.detectMarkerLite(ra, 100);\r
ar.getTransmationMatrix(result_mat);\r
\r
// マーカーを検出\r
Date d2 = new Date();\r
- for (int i = 0; i < 10000; i++) {\r
+ for (int i = 0; i < 1000; i++) {\r
// 変換行列を取得\r
- ar.detectMarkerLite(ra, 110);\r
+ ar.detectMarkerLite(ra, 100);\r
ar.getTransmationMatrix(result_mat);\r
}\r
Date d = new Date();\r
-/**
- * VFM+ARToolkitテストプログラム
- * カメラから取り込んだデータからマーカーを検出して、一致度と変換行列を表示します。
- * (c)2008 A虎@nyatla.jp
- * airmail(at)ebony.plala.or.jp
- * http://nyatla.jp/
+/* このソースは実験用のソースです。
+ * 動いたり動かなかったりします。
+ *
*/
package jp.nyatla.nyartoolkit.dev;
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.*;
+/* このソースは実験用のソースです。\r
+ * 動いたり動かなかったりします。\r
+ * \r
+ */\r
package jp.nyatla.nyartoolkit.dev;\r
\r
import java.awt.Frame;\r
import jp.nyatla.nyartoolkit.core.raster.*;\r
import jp.nyatla.nyartoolkit.core.raster.rgb.NyARRgbRaster_BGRA;\r
import jp.nyatla.nyartoolkit.core.labeling.*;\r
-import jp.nyatla.nyartoolkit.core.labeling.types.*;\r
+\r
import jp.nyatla.nyartoolkit.core2.rasteranalyzer.*;\r
import jp.nyatla.utils.j2se.*;\r
\r