* マーカパターンにID番号とメタデータを関連付けたテーブルを持ち、パターンの一致検索機能を提供します。\r
* テーブルには、ARToolKitフォーマットのマーカパターンと、ID番号、ユーザ定義のデータのセットを格納します。\r
* このクラスは、テーブルの操作機能と、テーブル要素の検索機能を提供します。\r
- * <p>サンプル-\r
- * このクラスのサンプルは、{@link Test_NyARRealityGl_ARMarker}を見てください。\r
- * </p>\r
+\r
*/\r
public class ARTKMarkerTable\r
{\r
* 但し、毎回外部サーバに問い合わせるとパフォーマンスの劣化が激しいので、実際には結果をキャッシュ\r
* するなどの対策が必要になります。\r
* </p>\r
- * <p>サンプル-\r
- * このクラスのサンプルは、{@link Test_NyARRealityGl_AsyncIdMarker}を見てください。\r
- * </p>\r
*/\r
public class ASyncIdMarkerTable\r
{\r
package jp.nyatla.nyartoolkit.rpf.mklib;\r
\r
-import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.*;\r
import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint2d;\r
-import jp.nyatla.nyartoolkit.rpf.reality.nyartk.NyARRealityTarget;\r
+import jp.nyatla.nyartoolkit.rpf.reality.nyartk.*;\r
/**\r
* 未知の矩形を認識するサンプル。\r
* 絶対的な寸法は求められないので、矩形の辺比率を推定して返します。\r
* <p>ヒント-\r
* 既知のカードを認識したいのならば、比率推定後にターゲットの模様からその絶対サイズを特定すると良いかもしれません。\r
* </p>\r
- * <p>サンプル-\r
- * このクラスのサンプルは、{@link Test_NyARRealityGl_CreditCardDetect}を見てください。\r
- * </p>\r
*/\r
public class CardDetect\r
{\r
*/\r
public static class UnknownRectInfo\r
{\r
- /** 内部使用。推定している{@link RealityTarget}のシリアルID。*/\r
+ /** 内部使用。推定している{@link NyARRealityTarget}のシリアルID。*/\r
public long _target_serial;\r
/** 内部使用。成功回数のカウンタ*/\r
public int _success_point;\r
this._target_serial=NyARRealityTarget.INVALID_REALITY_TARGET_ID;\r
}\r
}\r
- /** {@link #UnknownRectInfo}のステータス値。 このターゲットを推定するには、より正面から撮影が必要です。*/\r
+ /** {@link UnknownRectInfo}のステータス値。 このターゲットを推定するには、より正面から撮影が必要です。*/\r
public final static int MORE_FRONT_CENTER=0;\r
- /** {@link #UnknownRectInfo}のステータス値。矩形比率を推定中です。*/\r
+ /** {@link UnknownRectInfo}のステータス値。矩形比率を推定中です。*/\r
public final static int ESTIMATE_NOW=1;\r
- /** {@link #UnknownRectInfo}のステータス値。矩形比率を推定完了。io_resultのメンバ変数が利用可能です。*/\r
+ /** {@link UnknownRectInfo}のステータス値。矩形比率を推定完了。io_resultのメンバ変数が利用可能です。*/\r
public final static int ESTIMATE_COMPLETE=2;\r
- /** {@link #UnknownRectInfo}のステータス値。推定に失敗しました。変な形のRECTだったのかも。*/\r
+ /** {@link UnknownRectInfo}のステータス値。推定に失敗しました。変な形のRECTだったのかも。*/\r
public final static int FAILED_ESTIMATE=3;\r
- /** {@link #UnknownRectInfo}のステータス値。推定に失敗しました。入力値が間違っている?*/\r
+ /** {@link UnknownRectInfo}のステータス値。推定に失敗しました。入力値が間違っている?*/\r
public final static int FAILED_TARGET_MISSMATCH=4;\r
/**\r
* この関数は、i_targetの矩形比率を推定します。\r
* <p>{@link UnknownRectInfo#last_status}のステータス値について。\r
* ステータス値の意味により、アプリケーションが何をするべきかが変わります。\r
* <ul>\r
- * <li>{@link MORE_FRONT_CENTER}\r
+ * <li>{@link #MORE_FRONT_CENTER}\r
* 入力されたターゲットでは比率推定が難しい。より正面から撮影しなおす必要がある。\r
- * <li>{@link ESTIMATE_NOW}\r
+ * <li>{@link #ESTIMATE_NOW}\r
* 入力されたターゲットで比率推定中である。推定を継続するために、次の画像を入力する。\r
- * <li>{@link ESTIMATE_COMPLETE}\r
+ * <li>{@link #ESTIMATE_COMPLETE}\r
* 比率推定に成功した。メンバ変数が読出し可能。\r
- * <li>{@link FAILED_ESTIMATE}\r
+ * <li>{@link #FAILED_ESTIMATE}\r
* 比率推定に失敗した。比率推定を継続できないので、アプリケーションはこのターゲットを{@link NyARRealityTarget#RT_DEAD}へ遷移させるべきである。\r
- * <li>{@link FAILED_TARGET_MISSMATCH}\r
+ * <li>{@link #FAILED_TARGET_MISSMATCH}\r
* 2回目以降の認識で、ターゲットと記録オブジェクトのシリアルIDが一致しない。正しい組み合わせで入力するべき。\r
* </ul>\r
* </p>\r
return;\r
}\r
/**\r
- * p1->p2とp2->p3の作る角のsin値の絶対値を得ます。\r
+ * この関数は、ベクトル(p1-<p2)と(p2-<p3)の作る角のsin値の絶対値を得ます。\r
* @param p1\r
+ * 点1\r
* @param p2\r
+ * 点2\r
* @param p3\r
+ * 点3\r
* @return\r
+ * sin値(0<=n<=1)\r
*/\r
public final static double getAbsSin(NyARDoublePoint2d p1,NyARDoublePoint2d p2,NyARDoublePoint2d p3)\r
{\r
* 要らないものと消失した者はDeadステータスで終了します。UnknownステータスとKnownステータスの違いは、外部情報(マーカパターンに関する物理知識)\r
* の有無です。Knownステータスのターゲットはより多くの外部情報により、Unknownステータスのターゲットよりも多くの情報を提供します。\r
* </p>\r
- * <p>サンプル-\r
- * {@link Test_NyARRealityGl_ARMarker}や、{@link Test_NyARRealityGl_IdMarker}が参考になります。\r
- * </p>\r
*/\r
public class NyARReality\r
{\r
* RTターゲットのシリアル番号を示す値。この値は、{@link NyARRealityTarget#getSerialId()}で得られる値です。\r
* @param i_dir\r
* このRTターゲットが、ARToolKitのdirectionでどの方位であるかを示す値\r
- * @param i_marker_size\r
+ * @param i_marker_width\r
* マーカーの高さ/幅がいくらであるかを示す値[mm単位]\r
* @return\r
* 成功すると、trueを返します。\r
/**\r
* この関数は、シリアル番号をキーに、リストからターゲットを探索します。\r
* @param i_serial\r
- * 検索するシリアルID。{@link RealityTarget}を参照。\r
+ * 検索するシリアルID。{@link NyARRealityTarget}を参照。\r
* @return\r
* 見つかると、そのオブジェクトの参照値。無ければnull\r
*/\r
/**\r
* この関数は、シリアル番号をキーに、リストからターゲットを探索して、そのインデクス番号を返します。\r
* @param i_serial\r
- * 検索するシリアルID。{@link RealityTarget}を参照。\r
+ * 検索するシリアルID。{@link NyARRealityTarget}を参照。\r
* @return\r
* リスト中のインデクス番号。\r
*/\r
* 配列サイズが十分でない場合、見つかった順に、配列の上限まで要素を返します。\r
* @param i_type\r
* 検索するRTターゲットのステータス値。{@link NyARRealityTarget}で定義される、RT_から始まるステータスタイプ値を指定します。\r
- * @param o_list\r
+ * @param o_result\r
* 選択したターゲットを格納する配列です。\r
* @return\r
* 選択できたターゲットの個数です。o_resultのlengthと同じ場合、取りこぼしが発生した可能性があります。\r
this._tracksource.syncResource();\r
}\r
/**\r
- * RGBソースラスタ{@link #_rgb_source}を参照する{@link PerspectiveRasterReader}を返します。\r
- * @return [read only] {@link #_rgb_source}にリンクした{@link PerspectiveRasterReader}オブジェクト\r
+ * RGBソースラスタ{@link #_rgb_source}を参照する{@link NyARPerspectiveRasterReader}を返します。\r
+ * @return [read only] {@link #_rgb_source}にリンクした{@link NyARPerspectiveRasterReader}オブジェクト\r
*/\r
public NyARPerspectiveRasterReader refPerspectiveRasterReader()\r
{\r
}\r
/**\r
* 所有するラスタが読出し可能であるかを返します。このクラスの場合には、常にtrueです。\r
- * @see {@link NyARRealitySource#isReady()}\r
+ * @see NyARRealitySource#isReady()\r
*/\r
public final boolean isReady()\r
{\r
}\r
/**\r
* RGBソースとトラッカのリソースとの内容の同期を取ります。\r
- * @see {@link NyARRealitySource#syncResource()}\r
+ * @see NyARRealitySource#syncResource()\r
*/\r
public final void syncResource() throws NyARException\r
{\r
}\r
/**\r
* RGBソースとトラッカのグレースケール画像との同期を取ります。\r
- * @see {@link NyARRealitySource#makeTrackSource()}\r
+ * @see NyARRealitySource#makeTrackSource()\r
*/\r
public final NyARTrackerSource makeTrackSource() throws NyARException\r
{\r
package jp.nyatla.nyartoolkit.rpf.sampler.lrlabel;\r
\r
import jp.nyatla.nyartoolkit.*;\r
-import jp.nyatla.nyartoolkit.core.labeling.rlelabeling.NyARLabeling_Rle;\r
-import jp.nyatla.nyartoolkit.core.labeling.rlelabeling.NyARRleLabelFragmentInfo;\r
+import jp.nyatla.nyartoolkit.core.labeling.rlelabeling.*;\r
import jp.nyatla.nyartoolkit.core.raster.*;\r
+import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.*;\r
\r
\r
\r
import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.status.*;\r
\r
\r
-\r
-\r
/**\r
- * このクラスは、四角形のトラッキングクラスです。画面内にある複数の矩形を、ターゲットとして識別して、追跡します。\r
- * @author nyatla\r
+ * このクラスは、画像中の四角形をトラッキングして、その状態を公開します。\r
+ * 入力データは、専用画像データコンテナの{@link NyARTrackerSource}クラスを使います。\r
+ * クラスはトラッキングしているターゲット(トラックターゲット)のリストを所有し、公開します。\r
+ * ユーザは、このリストを参照し、編集することで、トラックターゲットの状態を得ることができます。\r
+ * <p>アルゴリズム - \r
+ * トラッカは既知サンプルリストと未知サンプルリストの2つのリストを持っています。\r
+ * このトラッキングアルゴリズムでは、サンプリングとトラッキングの2段構成で、これらのリストを編集して処理を進めます。\r
+ * <p>サンプリング - \r
+ * サンプリングは、ラべリングした輪郭線から四角形(サンプル)を見つけ、既知のものと未知のものに分離する作業です。\r
+ * 判定は、ターゲットのリストとサンプルの値を比較して行います。既知のターゲットは既知サンプルリストへ保存し、\r
+ * 未知のものはそのまま新しいターゲットとして、ターゲットリストへ登録します。\r
+ * ここで、ラべリングを軽量な画像(1/2^nのエッジ画像)に対して行うことで、負荷軽減を達成します。\r
+ * </p>\r
+ * <p>トラッキング\r
+ * トラッキングは少々複雑です。トラッキングは、4つのステージがあり、各ステージで必要な情報のみをトラックターゲットから抽出します。\r
+ * 4つのターゲットは、new,ignore,contoure,rectです。\r
+ * <ul>\r
+ * <li>new - 新規ターゲットです。contourターゲットへ遷移するのを待っています。得られる情報は、2D画像上でのクリップ範囲のみです。\r
+ * <li>ignore - 分析を必要としないターゲットです。一定時間が経過すると、自動的に消失します。得られる情報は、2D画像上でのクリップ範囲のみです。\r
+ * <li>contur - 輪郭線まで分析するターゲットです。rectターゲットへ遷移するのを待っています。得られる情報は、2D画像上でのクリップ範囲、輪郭線情報です。\r
+ * <li>rect - 矩形頂点まで分析するターゲットです。得られる情報は、2D画像上でのクリップ範囲、矩形の頂点座標です。\r
+ * </ul>\r
+ * </p>\r
+ * まずはじめに、トラッカはサンプリングで得られた既知サンプルを適切なターゲットにディスパッチします。\r
+ * 全てのディスパッチが完了した後に、ディスパッチされた情報を元に、各ターゲットの状態を更新します。\r
+ * ステージによっては、ディスパッチが行われなかった場合でも、ステージ独自のサンプリング方法で状態を更新する場合があります。\r
+ * 通常は、new,contur,rectの順で遷移します。各ステージに置かれるターゲットの数を調整することで、負荷量をコントロールすることができます。\r
+ * ignoreは分析の必要ないターゲットを意図的に無視するためのステージです。認識に失敗したターゲットや、消失したターゲットなどがここに集められ、消滅していきます。\r
+ * </p>\r
*\r
*/\r
public class NyARTracker\r
private NyARTargetPool target_pool;\r
/**\r
* ターゲットリストです。このプロパティは内部向けです。\r
- * refTrackTarget関数を介してアクセスしてください。\r
+ * {@link #refTrackTarget}関数を介してアクセスしてください。\r
*/\r
public NyARTargetList _targets;\r
\r
private int _number_of_rect; \r
\r
/**\r
- * newターゲットの数を返します。\r
+ * この関数は、newステータスのターゲット数を返します。\r
* @return\r
+ * newターゲットの数\r
*/\r
public final int getNumberOfNew()\r
{\r
return this._number_of_new; \r
}\r
/**\r
- * ignoreターゲットの数を返します。\r
+ * この関数は、ignoreステータスのターゲット数を返します。\r
* @return\r
+ * ignoreターゲットの数\r
*/\r
public final int getNumberOfIgnore()\r
{\r
return this._number_of_ignore; \r
}\r
/**\r
- * contourターゲットの数を返します。\r
+ * この関数は、contourターゲットの数を返します。\r
* @return\r
+ * contourターゲットの数\r
*/\r
public final int getNumberOfContur()\r
{\r
return this._number_of_contoure; \r
}\r
/**\r
- * rectターゲットの数を返します。\r
+ * この関数は、rectターゲットの数を返します。\r
* @return\r
+ * rectターゲットの数\r
*/\r
public final int getNumberOfRect()\r
{\r
return this._number_of_rect; \r
}\r
/**\r
- * ターゲットリストの参照値を返します。\r
+ * ã\81\93ã\81®é\96¢æ\95°ã\81¯ã\80\81ã\82¿ã\83¼ã\82²ã\83\83ã\83\88ã\83ªã\82¹ã\83\88ã\81®å\8f\82ç\85§å\80¤ã\82\92è¿\94ã\81\97ã\81¾ã\81\99ã\80\82\r
* @return\r
+ * [read only]ターゲットリストの参照値\r
*/\r
public final NyARTargetList refTrackTarget()\r
{\r
}\r
/**\r
* コンストラクタです。\r
+ * ステージごとのターゲットの最大数を指定して、インスタンスを生成します。\r
* @param i_max_new\r
* Newトラックターゲットの最大数を指定します。\r
* @param i_max_cont\r
}\r
\r
/**\r
- * Trackerの状態を更新します。\r
- * @param i_source\r
+ * この関数は、{@link NyARTrackerSource}の情報から、インスタンスの状態を更新します。\r
+ * 関数の実行後に、インスタンスの所有するトラックターゲットの状態は更新されます。\r
+ * この関数は、{@link NyARTrackerSource#makeSampleOut}を呼び出してトラックソース内の画像を同期をします。\r
+ * @param i_s\r
+ * 基本画像にイメージを書き込んだコンテナを指定します。\r
* @throws NyARException\r
*/\r
public void progress(NyARTrackerSource i_s) throws NyARException\r
* @param i_sample\r
* @throws NyARException \r
*/\r
- public final static void updateNewStatus(NyARTargetList i_list,NyARNewTargetStatusPool i_pool,LowResolutionLabelingSamplerOut.Item[] source,int[] index) throws NyARException\r
+ private final static void updateNewStatus(NyARTargetList i_list,NyARNewTargetStatusPool i_pool,LowResolutionLabelingSamplerOut.Item[] source,int[] index) throws NyARException\r
{\r
NyARTarget d_ptr;\r
NyARTarget[] i_nes=i_list.getArray(); \r
* @param index\r
* @throws NyARException\r
*/\r
- public static void updateContureStatus(NyARTargetList i_list,INyARVectorReader i_vecreader,NyARContourTargetStatusPool i_stpool,LowResolutionLabelingSamplerOut.Item[] source,int[] index) throws NyARException\r
+ private static void updateContureStatus(NyARTargetList i_list,INyARVectorReader i_vecreader,NyARContourTargetStatusPool i_stpool,LowResolutionLabelingSamplerOut.Item[] source,int[] index) throws NyARException\r
{\r
NyARTarget[] crd=i_list.getArray(); \r
NyARTarget d_ptr;\r
d_ptr._ref_status=st;\r
}\r
}\r
- public static void updateRectStatus(NyARTargetList i_list,INyARVectorReader i_vecreader,NyARRectTargetStatusPool i_stpool,LowResolutionLabelingSamplerOut.Item[] source,int[] index) throws NyARException\r
+ private static void updateRectStatus(NyARTargetList i_list,INyARVectorReader i_vecreader,NyARRectTargetStatusPool i_stpool,LowResolutionLabelingSamplerOut.Item[] source,int[] index) throws NyARException\r
{ \r
NyARTarget[] rct=i_list.getArray();\r
NyARTarget d_ptr;\r
this._number_of_ignore--;\r
return;\r
}\r
- \r
/**\r
- * このターゲットのステータスを、IgnoreStatusへ変更します。\r
- * @throws NyARException \r
+ * この関数は、指定したターゲットのステータスを、ignoreにします。\r
+ * @param i_target\r
+ * 遷移させるトラックターゲットを指定します。\r
+ * このターゲットのステータスは、{@link NyARTargetStatus#ST_NEW},{@link NyARTargetStatus#ST_CONTURE},{@link NyARTargetStatus#ST_RECT}の何れかである必要があります。\r
+ * このオブジェクトは、インスタンスに所有されている必要があります。\r
+ * @param i_life\r
+ * ignoreに遷移した後の、生存時間をサイクル数で指定します。\r
+ * @throws NyARException\r
*/\r
public final void changeStatusToIgnore(NyARTarget i_target,int i_life) throws NyARException\r
{\r
}\r
\r
/**\r
- * サンプルを格納するスタックです。このクラスは、一時的なリストを作るために使います。\r
+ * このクラスは、サンプルの参照値を格納するスタックです。\r
+ * {@link NyARTracker}から使います。ユーザが使うことはありません。\r
*/\r
final class SampleStack extends NyARPointerStack<LowResolutionLabelingSamplerOut.Item>\r
{\r
+ /**\r
+ * コンストラクタです。\r
+ * @param i_size\r
+ * リストの最大数\r
+ * @throws NyARException\r
+ */\r
public SampleStack(int i_size) throws NyARException\r
{\r
super();\r
\r
\r
/**\r
- * NyARTargetとSampleStack.Item間の、点間距離マップを作製するクラスです。\r
- * スーパークラスから、setPointDists関数をオーバライドします。\r
- *\r
+ * このクラスは、{@link NyARDistMap}の距離マップ生成関数を拡張したクラスです。\r
+ * {@link #setPointDists}をオーバロードします。\r
*/\r
final class DistMap extends NyARDistMap\r
{\r
+ /**\r
+ * コンストラクタです。\r
+ * {@link NyARDistMap}と同じです。\r
+ * @param i_max_col\r
+ * {@link NyARDistMap}を参照してください。\r
+ * @param i_max_row\r
+ * {@link NyARDistMap}を参照してください。\r
+ */\r
public DistMap(int i_max_col,int i_max_row)\r
{\r
super(i_max_col,i_max_row);\r
}\r
+ /**\r
+ * この関数は、ターゲットリスト距離マップの作成と頂点ペアの計算をバッチ処理して返します。\r
+ * 得られるのは、{@link NyARTargetList}の要素と最も距離の近い{@link SampleStack}要素の、インデクス番号を格納した配列です。\r
+ * @param igsource\r
+ * サンプルの配列\r
+ * @param igtr\r
+ * ターゲットの配列\r
+ * @param index\r
+ * インデクス配列を格納する配列。igtrと同じサイズが必要です。\r
+ * 該当する要素が見つからないときは、-1をセットします。\r
+ * \r
+ */\r
public void makePairIndexes(SampleStack igsource, NyARTargetList igtr,int[] index)\r
{\r
this.setPointDists(igsource.getArray(),igsource.getLength(),igtr.getArray(),igtr.getLength());\r
return;\r
}\r
/**\r
- * 2ペアの点間距離を計算します。\r
- * getMinimumPairで求まるインデクスは、NyARTargetに最も一致するLowResolutionLabelingSamplerOut.Itemのインデックスになります。\r
+ * この関数は、サンプルの矩形とターゲットのクリップ矩形の対角頂点距離を元に、距離マップを作ります。\r
* @param i_sample\r
+ * サンプルを格納した配列。\r
* @param i_smp_len\r
+ * i_sampleの有効な要素数\r
* @param i_target\r
+ * ターゲットを格納した配列。\r
* @param i_target_len\r
+ * i_targetの有効な要素数\r
*/\r
public void setPointDists(LowResolutionLabelingSamplerOut.Item[] i_sample,int i_smp_len,NyARTarget[] i_target,int i_target_len)\r
{\r
\r
import jp.nyatla.nyartoolkit.NyARException;\r
import jp.nyatla.nyartoolkit.core.raster.NyARGrayscaleRaster;\r
-import jp.nyatla.nyartoolkit.rpf.sampler.lrlabel.LowResolutionLabelingSamplerOut;\r
+import jp.nyatla.nyartoolkit.rpf.sampler.lrlabel.*;\r
+import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.*;\r
\r
/**\r
- * LowResolutionLabelingSamplerへの入力コンテナの抽象クラスです。\r
- * 基本GS画像と、1/nサイズのRobertsエッジ検出画像を持ち、これらに対する同期APIとアクセサを定義します。\r
+ * このクラスは、LowResolutionLabelingSamplerへの入力コンテナの抽象クラスです。\r
+ * 基本GS画像と、ヒント画像(1/nサイズのRobertsエッジ画像)を持ち、これらに対する同期APIとアクセサを定義します。\r
* <p>\r
* 継承クラスでは、_rbraster,_base_raster,_vec_readerメンバ変数の実体と、abstract関数を実装してください。\r
* </p>\r
*/\r
public abstract class NyARTrackerSource\r
{\r
+ /** ヒント画像(Roberts画像)の解像度値。1/n表記*/\r
protected int _rob_resolution;\r
//継承クラスで設定されるべきオブジェクト\r
+ \r
+ /** ヒント画像を格納するオブジェクト。継承クラスで割り当てること。*/\r
protected NyARGrayscaleRaster _rbraster;\r
+ /** 基本GS画像を格納するオブジェクト。継承クラスで割り当てること。*/\r
protected NyARGrayscaleRaster _base_raster;\r
- protected INyARVectorReader _vec_reader; \r
+ /** 基本画像に対する画素ベクトル読出しオブジェクト。継承クラスで割り当てること。*/\r
+ protected INyARVectorReader _vec_reader;\r
+ /** サンプリングアウトを格納するオブジェクト。継承クラスで割り当てること。*/\r
protected LowResolutionLabelingSamplerOut _sample_out;\r
/**\r
- * Robertsエッジ画像の解像度を指定する。\r
+ * コンストラクタです。\r
+ * ヒント画像の解像度値を指定して、インスタンスを作成します。\r
* @param i_rob_resolution\r
+ * ヒント画像の解像度値。\r
*/\r
protected NyARTrackerSource(int i_rob_resolution)\r
{\r
this._rob_resolution=i_rob_resolution;\r
}\r
/**\r
- * 基本GS画像に対するVector読み取り機を返します。\r
- * このインスタンスは、基本GS画像と同期していないことがあります。\r
- * 基本GS画像に変更を加えた場合は、getSampleOut,またはsyncResource関数を実行して同期してから実行してください。\r
+ * この関数は、Vector読み取りオブジェクトを返します。\r
+ * このオブジェクトは、使用前にインスタンスの同期が必要な事があります。\r
+ * 基本GS画像に変更を加えた後に{@link NyARTracker#progress}を実行せずに使用する場合は、\r
+ * {@link #makeSampleOut},または{@link #syncResource}関数を実行してから使用してください。\r
* @return\r
+ * 基本画像、ヒント画像を元にしたVectorリーダ\r
*/\r
public final INyARVectorReader getBaseVectorReader()\r
{\r
}\r
\r
/**\r
- * ã\82¨ã\83\83ã\82¸ç\94»å\83\8fを返します。\r
- * ã\81\93ã\81®ã\82¤ã\83³ã\82¹ã\82¿ã\83³ã\82¹ã\81¯ã\80\81å\9fºæ\9c¬GSç\94»å\83\8fã\81¨å\90\8cæ\9c\9fã\81\97ã\81¦ã\81\84ã\81ªã\81\84ã\81\93ã\81¨があります。\r
- * å\9fºæ\9c¬GSç\94»å\83\8fã\81«å¤\89æ\9b´ã\82\92å\8a ã\81\88ã\81\9få ´å\90\88ã\81¯ã\80\81makeSampleOut,ã\81¾ã\81\9fã\81¯syncResourceé\96¢æ\95°ã\82\92å®\9fè¡\8cã\81\97ã\81¦å\90\8cæ\9c\9fã\81\97ã\81¦ã\81\8bã\82\89å®\9fè¡\8cã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82\r
- * 継承クラスでは、エッジ画像を返却してください。\r
+ * ã\81\93ã\81®é\96¢æ\95°ã\81¯ã\80\81ã\83\92ã\83³ã\83\88ç\94»å\83\8f(ã\82¨ã\83\83ã\82¸ç\94»å\83\8f)ã\81®å\8f\82ç\85§å\80¤を返します。\r
+ * ã\81\93ã\81®ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\81¯ã\80\81使ç\94¨å\89\8dã\81«ã\82¤ã\83³ã\82¹ã\82¿ã\83³ã\82¹ã\81®å\90\8cæ\9c\9fã\81\8cå¿\85è¦\81ã\81ªäº\8bがあります。\r
+ * å\9fºæ\9c¬GSç\94»å\83\8fã\81«å¤\89æ\9b´ã\82\92å\8a ã\81\88ã\81\9få¾\8cã\81«{@link NyARTracker#progress}ã\82\92å®\9fè¡\8cã\81\9bã\81\9aã\81«ä½¿ç\94¨ã\81\99ã\82\8bå ´å\90\88ã\81¯ã\80\81\r
+ * {@link #makeSampleOut},または{@link #syncResource}関数を実行してから使用してください。\r
* @return\r
+ * ヒント画像のオブジェクト。\r
*/\r
public final NyARGrayscaleRaster refEdgeRaster()\r
{\r
return this._rbraster;\r
}\r
/**\r
- * 基準画像を返します。\r
- * 継承クラスでは、基本画像を返却してください。\r
+ * この関数は、基準画像の参照値を返します。\r
* @return\r
+ * 基本画像のオブジェクト。\r
*/\r
public final NyARGrayscaleRaster refBaseRaster()\r
{\r
return this._base_raster;\r
}\r
/**\r
- * 最後に作成した{@link LowResolutionLabelingSamplerOut}へのポインタを返します。\r
- * この関数は、{@link NyARTracker#progress}、または{@link #syncResource}の後に呼び出すことを想定しています。\r
- * それ以外のタイミングでは、返却値の内容が同期していないことがあるので注意してください。\r
+ * この関数は、{@link LowResolutionLabelingSamplerOut}オブジェクトの参照値を返します。\r
+ * へのポインタを返します。\r
+ * このオブジェクトは、使用前にインスタンスの同期が必要な事があります。\r
+ * 基本GS画像に変更を加えた後に{@link NyARTracker#progress}を実行せずに使用する場合は、\r
+ * {@link #makeSampleOut}の戻り値を使うか、{@link #syncResource}関数を実行してから使用してください。\r
* @return\r
+ * 現在のSampleOutオブジェクトの参照値\r
*/\r
public final LowResolutionLabelingSamplerOut refLastSamplerOut()\r
{\r
return this._sample_out;\r
}\r
/**\r
- * 基準画像と内部状態を同期します。(通常、アプリケーションからこの関数を使用することはありません。)\r
- * エッジ画像から{@link _sample_out}を更新する関数を実装してください。\r
+ * この関数は、基準画像と内部状態を同期します。\r
+ * 通常、ユーザがこの関数を使用することはありません。\r
+ * 実装クラスでは、{@link #_sample_out}を更新する関数を実装してください。\r
* @throws NyARException\r
*/\r
public abstract void syncResource() throws NyARException;\r
\r
/**\r
- * SampleOutを計算して、参照値を返します。\r
- * この関数は、{@link NyARTracker#progress}が呼び出します。\r
- * 継承クラスでは、エッジ画像{@link _rbraster}から{@link _sample_out}を更新して、返却する関数を実装してください。\r
+ * この関数は、インスタンスのメンバを同期した後に、SampleOutを計算して、参照値を返します。\r
+ * この関数は、{@link NyARTracker#progress}が呼び出します。通常、ユーザが使用することはありません。\r
+ * 実装クラスでは、インスタンスの同期後に、{@link #_sample_out}を更新する関数を実装してください。\r
* @throws NyARException\r
*/\r
public abstract LowResolutionLabelingSamplerOut makeSampleOut() throws NyARException;\r
import jp.nyatla.nyartoolkit.rpf.sampler.lrlabel.LowResolutionLabelingSamplerOut;\r
\r
/**\r
- * NyARTrackerSourceのリファレンス実装です。\r
+ * このクラスは、NyARTrackerSourceのリファレンス実装です。\r
* 全ての画像処理を処理系のソフトウェアで実装します。\r
+ * <p>基本的な使い方 - \r
+ * このクラスは、次のような手順で使います。\r
+ * <ul>\r
+ * <li>{@link #refBaseRaster}関数で、基本グレースケール画像を得る。\r
+ * <li>基本グレースケール画像に、新しいイメージを書込む。\r
+ * <li>{@link NyARTracker#progress}関数に入力する。\r
+ * </ul>\r
+ * インスタンスの所有するラスタ間の同期は、{@link NyARTracker#progress}がコールする{@link #makeSampleOut}関数で行います。\r
+ * </p>\r
*/\r
public class NyARTrackerSource_Reference extends NyARTrackerSource\r
{\r
private NyARGrayscaleRaster _rb_source;\r
private NegativeSqRoberts _rfilter=new NegativeSqRoberts(NyARBufferType.INT1D_GRAY_8);\r
/**\r
+ * コンストラクタです。\r
+ * ヒント画像\r
* @param i_number_of_sample\r
* サンプラが検出する最大数。\r
* 通常100~200以上を指定します。(QVGA画像あたり、100個を基準にします。)\r
this._base_raster.wrapBuffer(i_ref_source.getBuffer());\r
}\r
\r
-\r
+ /**\r
+ * この関数は、基準画像と内部状態を同期します。 通常、ユーザがこの関数を使用することはありません。 \r
+ */\r
public void syncResource() throws NyARException\r
{\r
//内部状態の同期\r
/**\r
* SampleOutを計算して返します。\r
* この関数は、NyARTrackerが呼び出します。\r
- * @param samplerout\r
- * @throws NyARException\r
+ * 通常、ユーザがこの関数を使用することはありません。 \r
*/\r
public LowResolutionLabelingSamplerOut makeSampleOut() throws NyARException\r
{\r
import jp.nyatla.nyartoolkit.rpf.utils.VecLinearCoordinates;\r
\r
/**\r
- * NyARVectorReaderインタフェイスのうち、画素形式に依存しない関数を実装するクラス。\r
+ * このクラスは、NyARVectorReaderインタフェイスのうち、画素形式に依存しない関数を実装する抽象クラスです。\r
+ * {@link #getAreaVector33}と{@link #getAreaVector22}関数が未実装です。\r
* 派生クラスで画素アクセス関数を実装して、最終的なクラスに仕上げます。\r
- *\r
*/\r
public abstract class NyARVectorReader_Base implements INyARVectorReader\r
{\r
private VecLinearCoordinates.VecLinearCoordinatePoint[] _tmp_coord_pos;\r
private int _rob_resolution;\r
+ /** 参照する基本GS画像の参照値*/\r
protected NyARGrayscaleRaster _ref_base_raster;\r
+ /** 参照するヒント画像の参照値*/\r
private NyARGrayscaleRaster _ref_rob_raster;\r
+ /** 参照する歪み矯正オブジェクトの参照値*/\r
protected NyARCameraDistortionFactor _factor;\r
/**\r
- * 継承を必須とするため、コンストラクタを隠蔽。\r
+ * コンストラクタです。\r
+ * 継承を必須とするため、隠蔽します。\r
*/\r
protected NyARVectorReader_Base()\r
{\r
- \r
}\r
\r
/**\r
+ * この関数は、インスタンスを初期化します。\r
* 継承クラスのコンストラクタから呼び出す。\r
* @param i_ref_raster\r
- * 基本画像\r
+ * 基本GS画像の参照値。\r
* @param i_ref_raster_distortion\r
* 歪み解除オブジェクト(nullの場合歪み解除を省略)\r
* @param i_ref_rob_raster\r
- * エッジ探索用のROB画像\r
+ * 基本GS画像のヒント画像の参照値。\r
* @param i_contour_pickup\r
- * 輪郭線取得クラス\r
- * @param \r
+ * 輪郭線取得オブジェクト\r
*/\r
public void initInstance(NyARGrayscaleRaster i_ref_raster,NyARCameraDistortionFactor i_ref_raster_distortion,NyARGrayscaleRaster i_ref_rob_raster,NyARContourPickup i_contour_pickup)\r
{\r
this._cpickup = i_contour_pickup;\r
return;\r
}\r
- /**\r
- * ワーク変数\r
- */\r
+ /** ワーク変数*/\r
protected NyARIntCoordinates _coord_buf;\r
private NyARContourPickup _cpickup;\r
+ /** ベクトルマージ用の敷居値*/\r
protected final double _MARGE_ANG_TH = NyARMath.COS_DEG_10;\r
-\r
+ /**\r
+ * この関数は、ヒント画像の基点から輪郭点をトレースして、元画像の輪郭ベクトルを配列に返します。\r
+ * 輪郭ベクトルの検出特性については、{@link #traceConture(NyARIntCoordinates, int, int, VecLinearCoordinates)}を確認してください。\r
+ */\r
public boolean traceConture(int i_th,\r
NyARIntPoint2d i_entry, VecLinearCoordinates o_coord)\r
throws NyARException\r
\r
\r
/**\r
- * 点1と点2の間に線分を定義して、その線分上のベクトルを得ます。点は、画像の内側でなければなりません。 320*240の場合、(x>=0 &&\r
- * x<320 x+w>0 && x+w<320),(y>0 && y<240 y+h>=0 && y+h<=319)となります。\r
- * \r
- * @param i_pos1\r
- * 点1の座標です。\r
- * @param i_pos2\r
- * 点2の座標です。\r
- * @param i_area\r
- * ベクトルを検出するカーネルサイズです。1の場合(n*2-1)^2のカーネルになります。 点2の座標です。\r
- * @param o_coord\r
- * 結果を受け取るオブジェクトです。\r
- * @return\r
- * @throws NyARException\r
+ * この関数は、元画像の点1と点2の間に線分を定義して、その線分上のベクトルを配列に得ます。 点は、画像の内側でなければなりません。\r
+ * この関数はクリッピング処理を行いません。クリッピングが必要な時には、traceLineWithClipを使います。\r
+ * 輪郭ベクトルの検出特性については、{@link #traceConture(NyARIntCoordinates, int, int, VecLinearCoordinates)}を確認してください。\r
*/\r
public boolean traceLine(NyARIntPoint2d i_pos1, NyARIntPoint2d i_pos2,int i_edge, VecLinearCoordinates o_coord)\r
{\r
// 点数は20点程度を得る。\r
return traceConture(coord, 1, s, o_coord);\r
}\r
-\r
+ /**\r
+ * この関数は、元画像の点1と点2の間に線分を定義して、その線分上のベクトルを配列に得ます。 点は、画像の内側でなければなりません。\r
+ * この関数はクリッピング処理を行いません。クリッピングが必要な時には、traceLineWithClipを使います。\r
+ * 輪郭ベクトルの検出特性については、{@link #traceConture(NyARIntCoordinates, int, int, VecLinearCoordinates)}を確認してください。\r
+ */\r
public boolean traceLine(NyARDoublePoint2d i_pos1,NyARDoublePoint2d i_pos2, int i_edge, VecLinearCoordinates o_coord)\r
{\r
NyARIntCoordinates coord = this._coord_buf;\r
return false;\r
}\r
/**\r
- * 輪郭線を取得します。\r
- * 取得アルゴリズムは、以下の通りです。\r
- * 1.輪郭座標(n)の画素周辺の画素ベクトルを取得。\r
- * 2.輪郭座標(n+1)周辺の画素ベクトルと比較。\r
- * 3.差分が一定以下なら、座標と強度を保存\r
- * 4.3点以上の集合になったら、最小二乗法で直線を計算。\r
- * 5.直線の加重値を個々の画素ベクトルの和として返却。\r
+ * この関数は、カーネルサイズを指定して、ヒント画像の輪郭座標から、元画像の輪郭線のベクトルを得ます。\r
+ * 輪郭ベクトルは、隣接する要素が似ている場合、加算してまとめられます。隣接していないベクトルはまとめられません。\r
*/\r
public boolean traceConture(NyARIntCoordinates i_coord, int i_pos_mag,int i_cell_size, VecLinearCoordinates o_coord)\r
{\r
private NyARLinear __temp_l = new NyARLinear();\r
\r
/**\r
- * クリッピング付きのライントレーサです。\r
- * \r
- * @param i_pos1\r
- * @param i_pos2\r
- * @param i_edge\r
- * @param o_coord\r
- * @return\r
- * @throws NyARException\r
+ * この関数は、クリッピング付きのライントレーサです。 元画像の点1と点2の間に線分を定義して、その線分上のベクトルを配列に得ます。 座標は、適切に画像内にクリッピングします。\r
*/\r
public boolean traceLineWithClip(NyARDoublePoint2d i_pos1,\r
NyARDoublePoint2d i_pos2, int i_edge, VecLinearCoordinates o_coord)\r
\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
import jp.nyatla.nyartoolkit.NyARException;\r
import jp.nyatla.nyartoolkit.rpf.sampler.lrlabel.LowResolutionLabelingSamplerOut;\r
import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.INyARVectorReader;\r
-import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.NyARTrackerSource;\r
-import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.NyARVectorReader_INT1D_GRAY_8;\r
import jp.nyatla.nyartoolkit.rpf.utils.VecLinearCoordinates;\r
\r
+\r
/**\r
- * 輪郭ソース1個を格納するクラスです。\r
- *\r
+ * このクラスは、輪郭ステータスのターゲットステータスを格納します。\r
+ * 輪郭ステータスは、ベクトル化した輪郭点配列をメンバに持ちます。\r
*/\r
public final class NyARContourTargetStatus extends NyARTargetStatus\r
{\r
/**\r
- * ベクトル要素を格納する配列です。\r
+ * [readonly]輪郭点のベクトル要素を格納する配列です。\r
*/\r
public VecLinearCoordinates vecpos=new VecLinearCoordinates(100);\r
-\r
- \r
- \r
//\r
//制御部\r
\r
/**\r
+ * コンストラクタです。\r
+ * この関数は、所有されるプールオブジェクトが使います。ユーザは使いません。\r
* @param i_ref_pool_operator\r
- * @param i_shared\r
- * 共有ワークオブジェクトを指定します。\r
- * \r
+ * プールオブジェクトのコントロールインタフェイス\r
*/\r
public NyARContourTargetStatus(INyARManagedObjectPoolOperater i_ref_pool_operator)\r
{\r
super(i_ref_pool_operator);\r
}\r
/**\r
+ * この関数は、サンプル値を元に、ベクトル輪郭を生成して、インスタンスを更新します。\r
* @param i_vecreader\r
+ * 画素ベクトルの読出しオブジェクト。\r
* @param i_sample\r
+ * 輪郭点の基点情報に使う、サンプルオブジェクト。\r
* @return\r
+ * 成功するとtrueを返します。\r
* @throws NyARException\r
*/\r
public boolean setValue(INyARVectorReader i_vecreader,LowResolutionLabelingSamplerOut.Item i_sample) throws NyARException\r
\r
\r
\r
-/*\r
- * 輪郭情報を保管します。\r
- * このクラスの要素は、他の要素から参照する可能性があります。\r
+/**\r
+ * このクラスは、{@link NyARContourTargetStatus}型のプールクラスです。\r
+ * 通常、ユーザが使うことはありません。\r
*/\r
public final class NyARContourTargetStatusPool extends NyARManagedObjectPool<NyARContourTargetStatus>\r
{ \r
/**\r
+ * コンストラクタです。\r
+ * プールの最大サイズを利用して、インスタンスを生成します。\r
* @param i_size\r
- * ã\82¹ã\82¿ã\83\83ã\82¯ã\81®æ\9c\80大ã\82µã\82¤ã\82º\r
+ * ã\83\97ã\83¼ã\83«ã\81®æ\9c\80大ã\82µã\82¤ã\82ºã\81§ã\81\99ã\80\82\r
* @throws NyARException\r
*/\r
public NyARContourTargetStatusPool(int i_size) throws NyARException\r
super.initInstance(i_size,NyARContourTargetStatus.class);\r
}\r
/**\r
- * @Override\r
+ * この関数は、リスト要素を生成して返します。\r
*/\r
protected NyARContourTargetStatus createElement()\r
{\r
\r
import jp.nyatla.nyartoolkit.NyARException;\r
import jp.nyatla.nyartoolkit.rpf.sampler.lrlabel.LowResolutionLabelingSamplerOut;\r
-\r
+/**\r
+ * このクラスは、newステータスのターゲットステータスを格納します。\r
+ * newステータスは、ラべリング結果の参照値をメンバに持ちます。\r
+ */\r
public final class NyARNewTargetStatus extends NyARTargetStatus\r
{\r
-\r
+ /** [readonly]ラべリング結果の参照ポインタです。*/\r
public LowResolutionLabelingSamplerOut.Item current_sampleout;\r
+ /**\r
+ * コンストラクタです。\r
+ * この関数は、所有されるプールオブジェクトが使います。ユーザは使いません。\r
+ * @param i_ref_pool_operator\r
+ * プールオブジェクトのコントロールインタフェイス\r
+ */ \r
public NyARNewTargetStatus(INyARManagedObjectPoolOperater i_ref_pool_operator) throws NyARException\r
{\r
super(i_ref_pool_operator);\r
this.current_sampleout=null;\r
}\r
/**\r
- * @Override\r
+ * この関数は、オブジェクトの参照カウンタを1減算します。 \r
+ * 参照しているオブジェクトの参照カウンタ操作も、同時に行います。\r
*/\r
public int releaseObject()\r
{\r
return ret;\r
}\r
/**\r
- * 値をセットします。この関数は、処理の成功失敗に関わらず、内容変更を行います。\r
+ * この関数は、ラべリング結果から、メンバ変数に値をセットします。\r
* @param i_src\r
- * セットするLowResolutionLabelingSamplerOut.Itemを指定します。関数は、このアイテムの参照カウンタをインクリメントします。\r
+ * セットするラべリング結果を指定します。\r
+ * 関数は、このオブジェクトの参照カウンタをインクリメントします。\r
* @throws NyARException\r
*/\r
public void setValue(LowResolutionLabelingSamplerOut.Item i_src) throws NyARException\r
import jp.nyatla.nyartoolkit.NyARException;\r
import jp.nyatla.nyartoolkit.core.utils.NyARManagedObjectPool;\r
\r
-\r
+/**\r
+ * このクラスは、{@link NyARNewTargetStatus}型のプールクラスです。\r
+ * 通常、ユーザが使うことはありません。\r
+ */\r
public class NyARNewTargetStatusPool extends NyARManagedObjectPool<NyARNewTargetStatus>\r
{\r
/**\r
* コンストラクタです。\r
+ * プールの最大サイズを利用して、インスタンスを生成します。\r
* @param i_size\r
- * poolのサイズ\r
+ * プールの最大サイズです。\r
* @throws NyARException\r
*/\r
public NyARNewTargetStatusPool(int i_size) throws NyARException\r
super.initInstance(i_size,NyARNewTargetStatus.class);\r
}\r
/**\r
- * @Override\r
+ * この関数は、リスト要素を生成して返します。\r
*/\r
protected NyARNewTargetStatus createElement() throws NyARException\r
{\r
import jp.nyatla.nyartoolkit.core.utils.NyARMath;\r
import jp.nyatla.nyartoolkit.rpf.sampler.lrlabel.LowResolutionLabelingSamplerOut;\r
import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.INyARVectorReader;\r
-import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.NyARVectorReader_INT1D_GRAY_8;\r
import jp.nyatla.nyartoolkit.rpf.utils.VecLinearCoordinates;\r
\r
\r
\r
-\r
+/**\r
+ * このクラスは、RECTステータスのターゲットステータスを格納します。\r
+ * RECTステータスは、ラベルから推定した矩形の4点座標と、そこから計算できるパラメータを持ちます。\r
+ */\r
public class NyARRectTargetStatus extends NyARTargetStatus\r
{\r
private NyARRectTargetStatusPool _ref_my_pool;\r
\r
\r
- /**\r
- * 現在の矩形情報\r
- */\r
+ /** [read only]矩形の頂点情報。4要素です。*/\r
public NyARDoublePoint2d[] vertex=NyARDoublePoint2d.createArray(4);\r
\r
- /**\r
- * 予想した頂点速度の二乗値の合計\r
- */\r
+ /** [read only]頂点予想値から計算した、頂点速度の二乗値の合計*/\r
public int estimate_sum_sq_vertex_velocity_ave;\r
\r
- /**\r
- * 予想頂点範囲\r
- */\r
+ /** [read only]頂点予測値のクリップ領域。*/\r
public NyARIntRect estimate_rect=new NyARIntRect();\r
- /**\r
- * 予想頂点位置\r
- */\r
+\r
+ /** [read only]頂点予測位置。4要素です。*/\r
public NyARDoublePoint2d[] estimate_vertex=NyARDoublePoint2d.createArray(4);\r
\r
- /**\r
- * 最後に使われた検出タイプの値です。DT_xxxの値をとります。\r
- */\r
+ /** [read only]どのような手法で矩形を検出したかを示す値。DT_XXXの値を取ります。*/\r
public int detect_type;\r
- /**\r
- * 初期矩形検出で検出を実行した。\r
- */\r
+ \r
+ /** 定数値。初期矩形検出に成功し、値を更新したことを示す。*/\r
public static final int DT_SQINIT=0;\r
- /**\r
- * 定常矩形検出で検出を実行した。\r
- */\r
+\r
+ /** 定数値。ラベル情報を元にした検出に成功し、値を更新したことを示す。*/\r
public static final int DT_SQDAILY=1;\r
- /**\r
- * 定常直線検出で検出を実行した。\r
- */\r
+ \r
+ /** 定数値。直線トレース検出に成功し、値を更新したことを示す。*/\r
public static final int DT_LIDAILY=2;\r
- /**\r
- * みつからなかったよ。\r
- */\r
+\r
+ /** 定数値。検出できず、過去のデータをそのまま引き継いだ事を示す。*/\r
public static final int DT_FAILED=-1;\r
\r
//\r
//制御部\r
\r
/**\r
- * @Override\r
- */\r
+ * コンストラクタです。\r
+ * この関数は、所有されるプールオブジェクトが使います。ユーザは使いません。\r
+ * @param i_pool\r
+ * プールオブジェクトのコントロールインタフェイス\r
+ */ \r
public NyARRectTargetStatus(NyARRectTargetStatusPool i_pool)\r
{\r
super(i_pool._op_interface);\r
// this.estimate_rect.clip(i_left, i_top, i_right, i_bottom);\r
return;\r
}\r
- \r
/**\r
- * 輪郭情報を元に矩形パラメータを推定し、値をセットします。\r
- * この関数は、処理の成功失敗に関わらず、内容変更を行います。\r
+ * この関数は、輪郭ステータスから矩形パラメータを推定して、インスタンスにセットします。\r
+ * 関数の成否にかかわらず、入力オブジェクトとインスタンスの状態が変化することに注意してください。\r
+ * 関数が成功すると、{@link #DT_SQINIT}を{@link #detect_type}にセットします。\r
* @param i_contour_status\r
- * 関数を実行すると、このオブジェクトの内容は破壊されます。\r
+ * 輪郭ステータスを格納したオブジェクト。\r
+ * 関数を実行すると、この内容は変更されます。\r
+ * @param i_sample_area\r
+ * ラベル情報から得たラベルのクリップ範囲です。\r
* @return\r
+ * 関数が成功するとtrueを返します。\r
* @throws NyARException\r
*/\r
public boolean setValueWithInitialCheck(NyARContourTargetStatus i_contour_status,NyARIntRect i_sample_area) throws NyARException\r
return true;\r
}\r
/**\r
- * 値をセットします。この関数は、処理の成功失敗に関わらず、内容変更を行います。\r
- * @param i_sampler_in\r
+ * この関数は、ラベル情報から矩形パラメータを推定して、インスタンスにセットします。\r
+ * 関数の成否にかかわらず、インスタンスの状態が変化することに注意してください。\r
+ * @param i_vec_reader\r
* @param i_source\r
* @param i_prev_status\r
* @return\r
* @throws NyARException\r
*/\r
- public boolean setValueWithDeilyCheck(INyARVectorReader i_vec_reader,LowResolutionLabelingSamplerOut.Item i_source,NyARRectTargetStatus i_prev_status) throws NyARException\r
+ private boolean setValueWithDeilyCheck(INyARVectorReader i_vec_reader,LowResolutionLabelingSamplerOut.Item i_source,NyARRectTargetStatus i_prev_status) throws NyARException\r
{\r
VecLinearCoordinates vecpos=this._ref_my_pool._vecpos;\r
//輪郭線を取る\r
return true;\r
}\r
/**\r
- * 輪郭からの単独検出\r
- * @param i_raster\r
+ * この関数は、前回の位置情報と直線検出器で矩形パラメータを推定して、インスタンスにセットします。\r
+ * 関数の成否にかかわらず、インスタンスの状態が変化することに注意してください。\r
+ * @param i_vec_reader\r
* @param i_prev_status\r
* @return\r
* @throws NyARException\r
*/\r
- public boolean setValueByLineLog(INyARVectorReader i_vec_reader,NyARRectTargetStatus i_prev_status) throws NyARException\r
+ private boolean setValueByLineLog(INyARVectorReader i_vec_reader,NyARRectTargetStatus i_prev_status) throws NyARException\r
{\r
//検出範囲からカーネルサイズの2乗値を計算。検出領域の二乗距離の1/(40*40) (元距離の1/40)\r
int d=((int)i_prev_status.estimate_rect.getDiagonalSqDist()/(NyARMath.SQ_40));\r
return true;\r
}\r
/**\r
- * 状況に応じて矩形選択手法を切り替えます。\r
+ * この関数は、2回目以降の矩形検出で、状況に応じた矩形検出処理を実行して、新しい値をインスタンスにセットします。\r
+ * 関数が成功すると、{@link #detect_type}に値をセットします。\r
* @param i_vec_reader\r
- * サンプリングデータの基本画像にリンクしたVectorReader\r
+ * 画素ベクトルを読みだすためのオブジェクト。\r
* @param i_source\r
- * ã\82µã\83³ã\83\97ã\83ªã\83³ã\82°ã\83\87ã\83¼ã\82¿\r
+ * ã\83©ã\81¹ã\83ªã\83³ã\82°ã\81\8bã\82\89å¾\97ã\82\89ã\82\8cã\81\9fã\82µã\83³ã\83\97ã\83«æ\83\85å ±ã\80\82ï¼\88å\98å\9c¨ã\81\97ã\81ªã\81\84ã\81¨ã\81\8dã\81¯NULLï¼\89\r
* @param i_prev_status\r
- * å\89\8då\9b\9eã\81®ç\8a¶æ\85\8bã\82\92æ ¼ç´\8dã\81\97ã\81\9fã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88\r
+ * å\89\8då\9b\9eã\81®ç\8a¶æ\85\8bã\82\92æ ¼ç´\8dã\81\97ã\81\9fã\82¹ã\83\86ã\83¼ã\82¿ã\82¹ã\82ªã\83\96ã\82¸ã\82§ã\82¯ã\83\88ã\80\82\r
* @return\r
+ * 値のセットに成功するとtrueを返します。\r
* @throws NyARException\r
*/\r
public boolean setValueByAutoSelect(INyARVectorReader i_vec_reader,LowResolutionLabelingSamplerOut.Item i_source,NyARRectTargetStatus i_prev_status) throws NyARException\r
}\r
}\r
/**\r
- * ARToolKitのdirectionモデルに従って、頂点をシフトします。\r
+ * この関数は、矩形の頂点情報をARToolKitのdirectionモデルに従って回転します。\r
+ * マーカパターンから方位値を得た後に、頂点順序を調整するために使います。\r
* @param i_dir\r
+ * ARToolKitのdirection値\r
*/\r
public void shiftByArtkDirection(int i_dir)\r
{\r
import jp.nyatla.nyartoolkit.rpf.utils.VecLinearCoordinates;\r
import jp.nyatla.nyartoolkit.rpf.utils.VecLinearCoordinatesOperator;\r
\r
-\r
+/**\r
+ * このクラスは、{@link NyARRectTargetStatus}型のプールクラスです。\r
+ * 通常、ユーザが使うことはありません。\r
+ */\r
public class NyARRectTargetStatusPool extends NyARManagedObjectPool<NyARRectTargetStatus>\r
{\r
- /**\r
- * 要素間で共有するオブジェクト。この変数は、NyARRectTargetStatus以外から使わないでください。\r
- */\r
+ /** 要素間で共有するオブジェクト。この変数は、NyARRectTargetStatus以外から使わないでください。*/\r
public VecLinearCoordinates _vecpos=new VecLinearCoordinates(100);\r
+ /** 要素間で共有するオブジェクト。この変数は、NyARRectTargetStatus以外から使わないでください。*/\r
public LineBaseVertexDetector _line_detect=new LineBaseVertexDetector();\r
+ /** 要素間で共有するオブジェクト。この変数は、NyARRectTargetStatus以外から使わないでください。*/\r
public VecLinearCoordinatesOperator _vecpos_op=new VecLinearCoordinatesOperator(); \r
+ /** 要素間で共有するオブジェクト。この変数は、NyARRectTargetStatus以外から使わないでください。*/\r
public VecLinearCoordinates.VecLinearCoordinatePoint[] _indexbuf=new VecLinearCoordinates.VecLinearCoordinatePoint[4];\r
+ /** 要素間で共有するオブジェクト。この変数は、NyARRectTargetStatus以外から使わないでください。*/\r
public NyARLinear[] _line=NyARLinear.createArray(4);\r
/**\r
+ * コンストラクタです。\r
+ * プールの最大サイズを利用して、インスタンスを生成します。\r
* @param i_size\r
- * スタックの最大サイズ\r
- * @param i_cood_max\r
- * 輪郭ベクトルの最大数\r
+ * プールの最大サイズです。\r
* @throws NyARException\r
*/\r
public NyARRectTargetStatusPool(int i_size) throws NyARException\r
{\r
super.initInstance(i_size,NyARRectTargetStatus.class);\r
}\r
+ /**\r
+ * この関数は、リスト要素を生成して返します。\r
+ */ \r
protected NyARRectTargetStatus createElement()\r
{\r
return new NyARRectTargetStatus(this);\r
\r
private final int[] __sq_table=new int[4];\r
/**\r
- * 頂点セット同士の差分を計算して、極端に大きな誤差を持つ点が無いかを返します。\r
+ * この関数は、頂点同士の移動距離を測定して、極端に大きな差を含む点が無いかをチェックします。\r
+ * 点セット同士の順番は一致している必要があります。\r
* チェックルールは、頂点セット同士の差のうち一つが、全体の一定割合以上の誤差を持つかです。\r
+ * この関数は矩形の辺推定の誤認識対策用のコードですが、より良い方法が見つかったら消してもかまいません。\r
* @param i_point1\r
+ * 点セット1(4要素)\r
* @param i_point2\r
+ * 点セット2(4要素)\r
* @return\r
- * @todo 展開して最適化\r
+ * 極端な点が無ければtrue\r
*/\r
public final boolean checkLargeDiff(NyARDoublePoint2d[] i_point1,NyARDoublePoint2d[] i_point2)\r
{\r
package jp.nyatla.nyartoolkit.rpf.tracker.nyartk.status;\r
\r
-import jp.nyatla.nyartoolkit.core.utils.NyARManagedObject;\r
+import jp.nyatla.nyartoolkit.core.utils.*;\r
+import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.*;\r
\r
\r
/**\r
- * TargetStatusの基礎クラスです。TargetStatusは、ステータス毎に異なるターゲットのパラメータを格納します。\r
- * @note\r
- * ST_から始まるID値は、NyARTrackerのコンストラクタと密接に絡んでいるので、変更するときは気をつけて!\r
+ * このクラスは、トラックターゲットのステータスを格納するマネージドオブジェクトのベースクラスです。\r
+ * トラックターゲットのステータス毎に、格納するパラメータを追加して使います。\r
+ * <p>メモ - \r
+ * ST_XXXの定数値は、{@link NyARTracker}のコンストラクタ実装と密接に絡んでいます。\r
+ * 変更するときは注意すること!\r
+ * </p>\r
*\r
*/\r
public class NyARTargetStatus extends NyARManagedObject\r
{\r
+ /** 定数値。IGNOREステータスを表します。*/\r
public final static int ST_IGNORE=0;\r
+ /** 定数値。NEWステータスを表します。*/\r
public final static int ST_NEW=1;\r
+ /** 定数値。RECTステータスを表します。*/\r
public final static int ST_RECT=2;\r
+ /** 定数値。CONTUREステータスを表します。*/\r
public final static int ST_CONTURE=3;\r
+ /** 定数値。ステータスの種類を表します。*/\r
public final static int MAX_OF_ST_KIND=3;\r
+ /**\r
+ * コンストラクタです。\r
+ * 所有されるプールオブジェクトを指定して、インスタンスを生成します。\r
+ * @param iRefPoolOperator\r
+ * プールオブジェクトのコントロールインタフェイス。\r
+ */\r
protected NyARTargetStatus(INyARManagedObjectPoolOperater iRefPoolOperator)\r
{\r
super(iRefPoolOperator);\r
import jp.nyatla.nyartoolkit.processor.*;\r
\r
/**\r
- * 320x240のBGRA32で記録されたIdmarkerを撮影したRAWイメージから、\r
- * Idマーカを認識します。\r
- *\r
+ * このプログラムは、NyIdマーカ検出クラス{@link SingleNyIdMarkerProcesser}の動作チェックプログラムです。\r
+ * 静止画から1個のIDマーカを読み取り、その数値を得る動作を確認できます。\r
+ * \r
+ * このプログラムには結果を表示する機能がありません。\r
+ * 数値の確認は、ブレークポイントを仕掛けるなどして行ってください。\r
*/\r
public class NyIdTest\r
{\r
+ /**\r
+ * このクラスは、{@link SingleNyIdMarkerProcesser}の自己コールバック関数を実装したクラスです。\r
+ * 自己コールバック関数は、{@link #detectMarker}の内部から呼び出さます。\r
+ * これにより、アプリケーションにマーカ状態の変化を通知します。\r
+ * 通知される条件については、それぞれの関数の説明を見てください。\r
+ */\r
public class MarkerProcessor extends SingleNyIdMarkerProcesser\r
{\r
private Object _sync_object = new Object();\r
+ /** {@link #onUpdateHandler}関数で得た姿勢行列のポインタ*/\r
public NyARTransMatResult transmat = null;\r
+ /** {@link #onEnterHandler}関数で得た姿勢行列のポインタ*/\r
public int current_id = -1;\r
-\r
+ /**\r
+ * コンストラクタです。\r
+ * パラメータを{@link #initInstance}へセットして初期化します。\r
+ * ここでは、{@link #initInstance}へ値を引き渡すだけです。\r
+ * @param i_cparam\r
+ * カメラパラメータ。\r
+ * @param i_raster_format\r
+ * 入力ラスタのフォーマット。\r
+ * @throws Exception\r
+ */\r
public MarkerProcessor(NyARParam i_cparam, int i_raster_format) throws Exception\r
{\r
super();//\r
return;\r
}\r
/**\r
- * アプリケーションフレームワークのハンドラ(マーカ出現)\r
+ * この関数は、{@link #detectMarker}から呼び出される自己コールバック関数です。\r
+ * 画像にマーカが現われたときに呼び出されます。\r
+ * ここでは、例として、マーカの情報を読み取り、それを{@link NyIdMarkerData_RawBit}を使って\r
+ * int値にエンコードする処理を実装しています。\r
*/\r
protected void onEnterHandler(INyIdMarkerData i_code)\r
{\r
}\r
}\r
/**\r
- * アプリケーションフレームワークのハンドラ(マーカ消滅)\r
+ * この関数は、{@link #detectMarker}から呼び出される自己コールバック関数です。\r
+ * 画像からマーカが消え去った時に呼び出されます。\r
+ * ここでは、マーカが消えた場合の後始末処理をします。\r
+ * このサンプルでは、メンバ変数をリセットしています。\r
*/\r
protected void onLeaveHandler()\r
{\r
return;\r
}\r
/**\r
- * アプリケーションフレームワークのハンドラ(マーカ更新)\r
+ * この関数は、{@link #detectMarker}から呼び出される自己コールバック関数です。\r
+ * 画像中のマーカの位置が変化したときに呼び出されます。\r
+ * この関数は、{@link #onEnterHandler}直後に呼び出されることもあります。\r
+ * \r
+ * このサンプルでは、引数で通知されたマーカの姿勢を、メンバ変数に保存しています。\r
*/\r
protected void onUpdateHandler(NyARSquare i_square, NyARTransMatResult result)\r
{\r
}\r
private final String data_file = "../Data/320x240NyId.raw";\r
private final String camera_file = "../Data/camera_para.dat";\r
+ /**\r
+ * コンストラクタです。\r
+ * ここで行う処理はありません。\r
+ */\r
public NyIdTest()\r
{\r
}\r
+ /**\r
+ * テスト関数の本体です。\r
+ * 設定ファイル、サンプル画像の読み込んだのちに{@link MarkerProcessor}を生成し、\r
+ * 1回だけ画像を入力して、マーカ検出を試行します。\r
+ * @throws Exception\r
+ */\r
public void Test() throws Exception\r
{\r
//AR用カメラパラメタファイルをロード\r
pr.detectMarker(ra);\r
return;\r
}\r
+ /**\r
+ * プログラムのエントリーポイントです。\r
+ * サンプルプログラム{@link NyIdTest}を実行します。\r
+ * @param args\r
+ * 引数はありません。\r
+ */\r
public static void main(String[] args)\r
{\r
\r
import jp.nyatla.nyartoolkit.core.types.*;\r
\r
/**\r
- * 320x240のBGRA32で記録されたRAWイメージから、1種類のパターンを認識し、\r
- * その変換行列を1000回求め、それにかかったミリ秒時間を表示します。\r
- * \r
+ * このサンプルは、{@link NyARSingleDetectMarker}クラスの動作チェック&ベンチマークプログラムです。\r
+ * 静止画から1個のHiroマーカを認識して、その姿勢変換行列、パターン一致率を得る動作を確認できます。\r
+ * 同時に、この処理を1000回実行して、処理時間を計測します。この数値は、NyARToolkitの基本性能の\r
+ * 指標として使うことができます。\r
*/\r
public class RawFileTest\r
{\r
import jp.nyatla.nyartoolkit.core.param.NyARParam;\r
import jp.nyatla.nyartoolkit.core.types.NyARBufferType;\r
import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint3d;\r
+import jp.nyatla.nyartoolkit.detector.NyARSingleDetectMarker;\r
import jp.nyatla.nyartoolkit.rpf.reality.nyartk.NyARReality;\r
import jp.nyatla.nyartoolkit.rpf.reality.nyartk.NyARRealityTarget;\r
import jp.nyatla.nyartoolkit.rpf.realitysource.nyartk.NyARRealitySource;\r
\r
\r
/**\r
- * NyARRealityのテストプログラム。動作保証なし。\r
- * \r
- * ターゲットプロパティの取得実験用のテストコードです。\r
- * ã\82¯ã\83ªã\83\83ã\82¯ã\81\97ã\81\9fã\83\9eã\83¼ã\82«ã\82\84ã\80\81ã\81\9dã\81®å¹³é\9d¢å\91¨è¾ºã\81\8bã\82\89ã\80\81ç\94»å\83\8fã\82\92å\8f\96å¾\97ã\81\99ã\82\8bã\83\86ã\82¹ã\83\88ã\81\8cã\81§ã\81\8dます。\r
- *\r
+ * このサンプルは、{@link NyARReality}クラスの動作チェック&ベンチマークプログラムです。\r
+ * 静止画からからUnknownステータスのマーカを検出して、Knownステータスに遷移できるかと、\r
+ * {@link NyARReality}が正常に動作するかを確認できます。\r
+ * ã\81¾ã\81\9fã\80\81{@link NyARReality#progress}ã\82\921000å\9b\9eå®\9fè¡\8cã\81\97ã\81¦ã\80\81å\87¦ç\90\86æ\99\82é\96\93ã\82\92è¨\88測ã\81\97ます。\r
+ * この数値は、{@link NyARReality}の基本性能の指標として使うことができます。\r
*/\r
-\r
public class RpfTest\r
{\r
private final static String PARAM_FILE = "../Data/camera_para.dat";\r
private final static String DATA_FILE = "../Data/320x240ABGR.raw";\r
private static final long serialVersionUID = -2110888320986446576L;\r
\r
- \r
+ /**\r
+ * メイン関数です。\r
+ * 次のフローで処理を実行します。\r
+ * @param args\r
+ */\r
public static void main(String[] args)\r
{\r
\r