\r
\r
/**\r
- * グレイスケールラスタに対する、特殊な画素アクセス手段を提供します。\r
- *\r
+ * このクラスは、{@link NyARBufferType#INT1D_GRAY_8}の画素形式に対応した画素ベクトルリーダーです。\r
*/\r
public class NyARVectorReader_INT1D_GRAY_8 extends NyARVectorReader_Base\r
{\r
/**\r
- * \r
+ * コンストラクタです。\r
+ * 基本GS画像、ヒント画像のセットから、インスタンスを作ります。\r
* @param i_ref_raster\r
- * 基本画像\r
+ * 基本GS画像の参照値\r
* @param i_ref_raster_distortion\r
- * 歪み解除オブジェクト(nullの場合歪み解除を省略)\r
+ * 基本画像の歪み補正オブジェクトの参照値\r
* @param i_ref_rob_raster\r
- * エッジ探索用のROB画像\r
- * @param \r
+ * ヒント画像の参照値\r
*/\r
public NyARVectorReader_INT1D_GRAY_8(NyARGrayscaleRaster i_ref_raster,NyARCameraDistortionFactor i_ref_raster_distortion,NyARGrayscaleRaster i_ref_rob_raster)\r
{\r
this.initInstance(i_ref_raster, i_ref_raster_distortion, i_ref_rob_raster,new NyARContourPickup());\r
}\r
\r
+\r
+// /**\r
+// * 画素の4近傍の画素ベクトルを取得します。 取得可能な範囲は、Rasterの1ドット内側です。 0 ,-1, 0 0, 0, 0 0 , x,\r
+// * 0 + -1, y,+1 0 ,+1, 0 0, 0, 0\r
+// * \r
+// * @param i_raster\r
+// * @param x\r
+// * @param y\r
+// * @param o_v\r
+// */\r
+// public void getPixelVector4(int x, int y, NyARIntPoint2d o_v)\r
+// {\r
+// assert ((x > 0) && (y > 0) && (x) < this._ref_base_raster.getWidth() && (y) < this._ref_base_raster.getHeight());\r
+// int[] buf = (int[])(this._ref_base_raster.getBuffer());\r
+// int w = this._ref_base_raster.getWidth();\r
+// int idx = w * y + x;\r
+// o_v.x = (buf[idx + 1] - buf[idx - 1]) >> 1;\r
+// o_v.y = (buf[idx + w] - buf[idx - w]) >> 1;\r
+// //歪み補正どうすんの\r
+// }\r
+//\r
+// /**\r
+// * 画素の8近傍画素ベクトルを取得します。 取得可能な範囲は、Rasterの1ドット内側です。\r
+// * -1,-2,-1 -1, 0,+1\r
+// * 0, y, 0 + -2, x,+2\r
+// * +1,+2,+1 -1, 0,+1\r
+// * \r
+// * @param i_raster\r
+// * @param x\r
+// * @param y\r
+// * @param o_v\r
+// */\r
+// public void getPixelVector8(int x, int y, NyARIntPoint2d o_v) {\r
+// assert ((x > 0) && (y > 0) && (x) < this._ref_base_raster.getWidth() && (y) < this._ref_base_raster.getHeight());\r
+// int[] buf = (int[])this._ref_base_raster.getBuffer();\r
+// int sw = this._ref_base_raster.getWidth();\r
+// int idx_0 = sw * y + x;\r
+// int idx_p1 = idx_0 + sw;\r
+// int idx_m1 = idx_0 - sw;\r
+// int b = buf[idx_m1 - 1];\r
+// int d = buf[idx_m1 + 1];\r
+// int h = buf[idx_p1 - 1];\r
+// int f = buf[idx_p1 + 1];\r
+// o_v.x = ((buf[idx_0 + 1] - buf[idx_0 - 1]) >> 1)\r
+// + ((d - b + f - h) >> 2);\r
+// o_v.y = ((buf[idx_p1] - buf[idx_m1]) >> 1) + ((f - d + h - b) >> 2);\r
+// //歪み補正どうするの?\r
+// }\r
+\r
/**\r
- * 画素の4近傍の画素ベクトルを取得します。 取得可能な範囲は、Rasterの1ドット内側です。 0 ,-1, 0 0, 0, 0 0 , x,\r
- * 0 + -1, y,+1 0 ,+1, 0 0, 0, 0\r
- * \r
- * @param i_raster\r
- * @param x\r
- * @param y\r
- * @param o_v\r
- */\r
-/* 未使用につきコメントアウト\r
- public void getPixelVector4(int x, int y, NyARIntPoint2d o_v)\r
- {\r
- assert ((x > 0) && (y > 0) && (x) < this._ref_base_raster.getWidth() && (y) < this._ref_base_raster.getHeight());\r
- int[] buf = (int[])(this._ref_base_raster.getBuffer());\r
- int w = this._ref_base_raster.getWidth();\r
- int idx = w * y + x;\r
- o_v.x = (buf[idx + 1] - buf[idx - 1]) >> 1;\r
- o_v.y = (buf[idx + w] - buf[idx - w]) >> 1;\r
- //歪み補正どうすんの\r
- }\r
-*/\r
- /**\r
- * 画素の8近傍画素ベクトルを取得します。 取得可能な範囲は、Rasterの1ドット内側です。\r
- * -1,-2,-1 -1, 0,+1\r
- * 0, y, 0 + -2, x,+2\r
- * +1,+2,+1 -1, 0,+1\r
- * \r
- * @param i_raster\r
- * @param x\r
- * @param y\r
- * @param o_v\r
- */\r
-/* 未使用につきコメントアウト\r
- public void getPixelVector8(int x, int y, NyARIntPoint2d o_v) {\r
- assert ((x > 0) && (y > 0) && (x) < this._ref_base_raster.getWidth() && (y) < this._ref_base_raster.getHeight());\r
- int[] buf = (int[])this._ref_base_raster.getBuffer();\r
- int sw = this._ref_base_raster.getWidth();\r
- int idx_0 = sw * y + x;\r
- int idx_p1 = idx_0 + sw;\r
- int idx_m1 = idx_0 - sw;\r
- int b = buf[idx_m1 - 1];\r
- int d = buf[idx_m1 + 1];\r
- int h = buf[idx_p1 - 1];\r
- int f = buf[idx_p1 + 1];\r
- o_v.x = ((buf[idx_0 + 1] - buf[idx_0 - 1]) >> 1)\r
- + ((d - b + f - h) >> 2);\r
- o_v.y = ((buf[idx_p1] - buf[idx_m1]) >> 1) + ((f - d + h - b) >> 2);\r
- //歪み補正どうするの?\r
- }\r
-*/\r
- /**\r
- * RECT範囲内の画素ベクトルの合計値と、ベクトルのエッジ中心を取得します。 320*240の場合、\r
- * RECTの範囲は(x>=0 && x<319 x+w>=0 && x+w<319),(y>=0 && y<239 x+w>=0 && x+w<319)となります。\r
- * @param ix\r
- * ピクセル取得を行う位置を設定します。\r
- * @param iy\r
- * ピクセル取得を行う位置を設定します。\r
- * @param iw\r
- * ピクセル取得を行う範囲を設定します。\r
- * @param ih\r
- * ピクセル取得を行う範囲を設定します。\r
- * @param o_posvec\r
- * エッジ中心とベクトルを返します。\r
- * @return\r
- * ベクトルの強度を返します。強度値は、差分値の二乗の合計です。\r
+ * この関数は、元画像の矩形領域を集計して、その領域内のエッジ中心と、エッジの方位ベクトルを返します。 画素の集計には、3x3のカーネルを使います。 矩形領域は、例えば取得元の画像が320*240の場合、(x>=0 && x<=320 x+w>=0 && x+w<=320),(y>=0 && y<=240 y+h>=0 && y+h<=240)です。 \r
*/\r
public final int getAreaVector33(int ix, int iy, int iw, int ih,NyARVecLinear2d o_posvec)\r
{\r
//加重平均の分母を返却\r
return sum_wx+sum_wy;\r
}\r
+ /**\r
+ * この関数は、元画像の矩形領域を集計して、その領域内のエッジ中心と、エッジの方位ベクトルを返します。 画素の集計には、2x2のカーネルを使います。 矩形領域は、例えば取得元の画像が320*240の場合、(x>=0 && x<=320 x+w>=0 && x+w<=320),(y>=0 && y<=240 y+h>=0 && y+h<=240)です。 \r
+ */ \r
public final int getAreaVector22(int ix, int iy, int iw, int ih,NyARVecLinear2d o_posvec)\r
{\r
assert (ih >= 3 && iw >= 3);\r