|
||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectjp.nyatla.nyar4psg.NyARPsgBaseClass
jp.nyatla.nyar4psg.MultiMarker
public class MultiMarker
このクラスは、複数のマーカに対応したARToolKit管理クラスです。 1映像中に異なる複数のマーカのあるユースケースで動作します。 入力画像はPImage形式です。
入れ子のクラスの概要 | |
---|---|
(package private) class |
MultiMarker.PImageSensor
|
(package private) class |
MultiMarker.PsgMsCfg
|
フィールドの概要 | |
---|---|
protected jp.nyatla.nyartoolkit.markersystem.NyARMarkerSystem |
_ms
|
protected MultiMarker.PImageSensor |
_ss
|
static double |
DEFAULT_CF_THRESHOLD
初期値定数。 |
static int |
DEFAULT_LOST_DELAY
初期値定数。 |
static int |
THLESHOLD_AUTO
敷居値の定数です。 |
クラス jp.nyatla.nyar4psg.NyARPsgBaseClass から継承されたフィールド |
---|
_config, _ps_background_mv, _ref_papplet, FRUSTUM_DEFAULT_FAR_CLIP, FRUSTUM_DEFAULT_NEAR_CLIP, VERSION |
コンストラクタの概要 | |
---|---|
MultiMarker(PApplet parent,
int i_width,
int i_height,
double[] i_intrinsic_matrix,
double[] i_distortion_coeffs)
コンストラクタです。 |
|
MultiMarker(PApplet parent,
int i_width,
int i_height,
String i_cparam_file)
コンストラクタです。 |
|
MultiMarker(PApplet parent,
int i_width,
int i_height,
String i_cparam_file,
NyAR4PsgConfig i_config)
コンストラクタです。 |
メソッドの概要 | |
---|---|
int |
addARMarker(PImage i_img,
int i_patt_resolution,
int i_edge_percentage,
float i_width)
この関数は、i_imgの画像をARマーカパターンとして登録します。 |
int |
addARMarker(String i_file_name,
float i_width)
この関数は、ARToolKitスタイルのマーカーをファイルから読みだして、登録します。 |
int |
addARMarker(String i_file_name,
int i_patt_resolution,
float i_width)
この関数は、ARToolKitスタイルのマーカーをファイルから読みだして、登録します。 |
int |
addARMarker(String i_file_name,
int i_patt_resolution,
int i_edge_percentage,
float i_width)
この関数は、ARToolKitスタイルのマーカーをファイルから読みだして、登録します。 |
int |
addNyIdMarker(int i_nyid,
int i_width)
この関数は、NyIdマーカを追加します。 |
int |
addNyIdMarker(int i_nyid_range_s,
int i_nyid_range_e,
int i_width)
この関数は、NyIdマーカを範囲指定で追加します。 |
int |
addPsARPlayCard(int i_psarid,
int i_width)
この関数は、PSVitaのARプレイカードを検出対象に追加します。 |
void |
beginTransform(int i_id)
この関数は、ProcessingのProjectionMatrixとModelview行列を、指定idのマーカ平面にセットします。 |
void |
detect(PImage i_image)
この関数は、画像からマーカーの検出処理を実行します。 |
void |
detectWithoutLoadPixels(PImage i_image)
PImage.loadPixels() を伴わないdetect() です。 |
void |
endTransform()
この関数は、 beginTransform(int) でセットしたProjectionとModelViewを元に戻します。 |
double |
getConfidence(int i_id)
この関数は、指定idのARマーカパターンの一致率を返します。 |
int |
getCurrentThreshold()
この関数は、現在の二値化敷居値を返します。 |
long |
getLife(int i_id)
この関数は、指定idのマーカのライフ値を返します。 |
int |
getLostCount(int i_id)
この関数は、指定idのマーカの認識状態を返します。 |
PMatrix3D |
getMarkerMatrix(int i_id)
この関数は、マーカの姿勢行列を返します。 |
PVector[] |
getMarkerVertex2D(int i_id)
この関数は、マーカのスクリーン上の4頂点を返します。 |
long |
getNyId(int i_id)
この関数は、指定idのNyIdマーカから、現在のマーカIdを取得します。 |
PMatrix3D |
getProjectionMatrix()
[readonly]この関数は、Processing形式のProjectionMatrixの参照値を返します。 |
PMatrix3D |
getProjectionMatrix(PMatrix3D i_buf)
この関数は、ProjectionMatrixをi_bufへ複製して返します。 |
protected void |
initInstance(PApplet parent,
NyARParam i_param,
NyAR4PsgConfig i_config)
インスタンスを初期化します。 |
boolean |
isExistMarker(int i_id)
この関数は、指定idのマーカが有効かを返します。 |
PVector |
marker2ScreenCoordSystem(int i_id,
double i_x,
double i_y,
double i_z)
この関数は、idで示されるマーカ座標系の点をスクリーン座標へ変換します。 |
PImage |
pickupMarkerImage(int i_id,
int i_x1,
int i_y1,
int i_x2,
int i_y2,
int i_x3,
int i_y3,
int i_x4,
int i_y4,
int i_out_w_pix,
int i_out_h_pix)
この関数は、idで指定したマーカの画像のXY平面上の4頂点でかこまれた領域から、画像を取得します。 |
PImage |
pickupRectMarkerImage(int i_id,
int i_l,
int i_t,
int i_w,
int i_h,
int i_out_w_pix,
int i_out_h_pix)
この関数は、idで指定したマーカのXY平面上の矩形領域から、画像を取得します。 |
PVector |
screen2MarkerCoordSystem(int i_id,
int i_x,
int i_y)
この関数は、スクリーン座標をidで指定したマーカ平面座標へ変換して返します。 |
void |
setARClipping(float i_near,
float i_far)
この関数は、視錐台のクリップ面を設定します。 |
void |
setConfidenceThreshold(double i_val)
この関数は、ARマーカパターン一致率の閾値を設定します。 |
void |
setLostDelay(int i_val)
この関数は、マーカ消失時の遅延数を設定します。 |
void |
setThreshold(int i_th)
この関数は、画像2値化の敷居値を設定します。 |
クラス jp.nyatla.nyar4psg.NyARPsgBaseClass から継承されたメソッド |
---|
drawBackground, initInstance, matResult2GLArray, matResult2PMatrix3D, nyarMat2PsMat, PMatrix2GLProjection, PMatrix2GLProjection, setARPerspective, setBackgroundOrtho, setPerspective |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
---|
protected MultiMarker.PImageSensor _ss
protected jp.nyatla.nyartoolkit.markersystem.NyARMarkerSystem _ms
public static final double DEFAULT_CF_THRESHOLD
public static final int DEFAULT_LOST_DELAY
public static final int THLESHOLD_AUTO
コンストラクタの詳細 |
---|
public MultiMarker(PApplet parent, int i_width, int i_height, String i_cparam_file, NyAR4PsgConfig i_config)
parent
- 親となるAppletオブジェクトを指定します。このOpenGLのレンダリングシステムを持つAppletである必要があります。i_cparam_file
- ARToolKitフォーマットのカメラパラメータファイルの名前を指定します。i_width
- 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。i_height
- 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。i_config
- コンフィギュレーションオブジェクトを指定します。
NyARException
public MultiMarker(PApplet parent, int i_width, int i_height, String i_cparam_file)
MultiMarker(PApplet, int, int, String, NyAR4PsgConfig)
のコンフィギュレーションに、NyAR4PsgConfig.CONFIG_DEFAULT
を指定した物と同じです。
parent
- MultiMarker(PApplet, int, int, String, NyAR4PsgConfig)
を参照。i_width
- 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。i_height
- 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。i_cparam_file
- MultiMarker(PApplet, int, int, String, NyAR4PsgConfig)
を参照。
NyARException
public MultiMarker(PApplet parent, int i_width, int i_height, double[] i_intrinsic_matrix, double[] i_distortion_coeffs)
MultiMarker(PApplet, int, int, String, NyAR4PsgConfig)
のコンフィギュレーションに、NyAR4PsgConfig.CONFIG_DEFAULT
を指定した物と同じです。
parent
- MultiMarker(PApplet, int, int, String, NyAR4PsgConfig)
を参照。i_width
- 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。i_height
- 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。i_size
- カメラパラメータのサイズ値i_intrinsic_matrix
- 3x3 matrix
このパラメータは、OpenCVのcvCalibrateCamera2関数が出力するintrinsic_matrixの値と合致します。i_distortion_coeffs
- 4x1 matrix
このパラメータは、OpenCVのcvCalibrateCamera2関数が出力するdistortion_coeffsの値と合致します。メソッドの詳細 |
---|
public void setConfidenceThreshold(double i_val)
DEFAULT_CF_THRESHOLD
です。
i_val
- 設定する値。0.0<n<1.0の値を設定します。public void setLostDelay(int i_val)
DEFAULT_LOST_DELAY
です。
i_val
- 設定する値。1以上の数値が必要です。public void setThreshold(int i_th)
THLESHOLD_AUTO
です。
i_th
- 固定式位置を指定する場合は、0<n<256の値を指定します。
固定式位置以外に、次の自動敷居値を利用できます。
THLESHOLD_AUTO
- 敷居値決定に#NyARRasterThresholdAnalyzer_SlidePTile
を使います。パラメータは15%、スキップ値は、入力画像/80です。
public int getCurrentThreshold()
protected void initInstance(PApplet parent, NyARParam i_param, NyAR4PsgConfig i_config) throws NyARException
parent
- i_width
- i_height
- i_cparam_file
- i_patt_resolution
- i_projection_coord_system
-
NyARException
public PMatrix3D getProjectionMatrix()
NyARPsgBaseClass
の記述:
NyARPsgBaseClass
内の getProjectionMatrix
public PMatrix3D getProjectionMatrix(PMatrix3D i_buf)
NyARPsgBaseClass
の記述:
NyARPsgBaseClass
内の getProjectionMatrix
public void setARClipping(float i_near, float i_far)
NyARPsgBaseClass
の記述:NyARPsgBaseClass.FRUSTUM_DEFAULT_NEAR_CLIP
とNyARPsgBaseClass.FRUSTUM_DEFAULT_FAR_CLIP
です。
設定値は、次回のNyARPsgBaseClass.setARPerspective()
から影響を及ぼします。現在の設定値にただちに影響を及ぼすものではありません。
NyARPsgBaseClass
内の setARClipping
i_near
- NearPlaneの値を設定します。単位は[mm]です。i_far
- FarPlaneの値を設定します。単位は[mm]です。public void beginTransform(int i_id)
endTransform()
とペアで使います。
関数を実行すると、現在のModelView行列とProjection行列がインスタンスに保存され、新しい行列がセットされます。
これらを復帰するには、endTransform()
を使います。
復帰するまでの間は、再度beginTransform(int)
を使うことはできません。
i_id
- マーカidを指定します。public void endTransform()
beginTransform(int)
でセットしたProjectionとModelViewを元に戻します。
この関数は、必ずbeginTransform(int)
とペアで使います。
public void detect(PImage i_image)
PImage.loadPixels()
を実行します。
PImage.loadPixels()
のタイミングをコントロールしたい場合は、detectWithoutLoadPixels(processing.core.PImage)
を使用してください。
i_image
- 検出処理を行う画像を指定します。public void detectWithoutLoadPixels(PImage i_image)
PImage.loadPixels()
を伴わないdetect()
です。
引数と戻り値の詳細は、detect(PImage)
を参照してください。
i_image
- detect(PImage)
public int addARMarker(String i_file_name, int i_patt_resolution, int i_edge_percentage, float i_width)
i_file_name
- マーカパターンファイル名を指定します。i_patt_resolution
- マーカパターンの解像度を指定します。i_edge_percentage
- マーカのエッジ幅を割合で指定します。
0<n<50の数値です。i_width
- マーカの物理サイズをmm単位で指定します。
addARMarker(java.lang.String, int, int, float)
とaddNyIdMarker(int, int)
関数を呼ぶたびにインクリメントされます。
getMarkerMatrix(int)
,getConfidence(int)
,isExistMarker(int)
,addARMarker(java.lang.String, int, int, float)
,
screen2MarkerCoordSystem(int, int, int)
,pickupMarkerImage(int, int, int, int, int, int, int, int, int, int, int)
,pickupRectMarkerImage(int, int, int, int, int, int, int)
のid値に使います。public int addARMarker(String i_file_name, int i_patt_resolution, float i_width)
i_file_name
- #addARMarker(String, int, int, double)
を参照。i_patt_resolution
- #addARMarker(String, int, int, double)
を参照。i_width
- #addARMarker(String, int, int, double)
を参照。
#addARMarker(String, int, int, double)
を参照。public int addARMarker(PImage i_img, int i_patt_resolution, int i_edge_percentage, float i_width)
i_img
- マーカパターンのカラー画像を指定します。
関数はi_imgのPImage.loadPixels()
を1度だけ呼び出します。i_patt_resolution
- 作成するマーカパターンの解像度を指定します。ARToolkitと同一であれば16です。
数値が高いほどシビアな判定が出来ますが、速度は低下します。i_edge_percentage
- エッジ割合を指定します。この数値は、元画像と、抽出するマーカパターンの両方に影響を及ぼします。
ARToolKit互換のパターンの場合、25を指定します。i_width
- #addARMarker(String, int, int, double)
を参照。
#addARMarker(String, int, int, double)
を参照。public int addARMarker(String i_file_name, float i_width)
i_file_name
- #addARMarker(String, int, int, double)
を参照。i_width
- #addARMarker(String, int, int, double)
を参照。
#addARMarker(String, int, int, double)
を参照。public int addNyIdMarker(int i_nyid, int i_width)
i_nyid
- NyIdを指定します。範囲は、0から33554431です。512以上の数値はmodel3のマーカが必要になるので、特に大量のマーカが必要でなければ512までの値にしてください。i_width
- マーカの物理サイズをmm単位で指定します。
addARMarker(java.lang.String, int, int, float)
とaddNyIdMarker(int, int)
関数を呼ぶたびにインクリメントされます。public int addNyIdMarker(int i_nyid_range_s, int i_nyid_range_e, int i_width)
getNyId(int)
で知ることができます。
範囲が重なるidを登録した場合には、最後に登録したidを優先して認識します。
i_nyid_s
- NyIdの範囲開始値を指定します。範囲は、addNyIdMarker(int, int)
を参照してください。i_nyid_e
- NyIdの範囲終了値を指定します。
i_nyid_s<=i_nyid_eの関係を満たす値を設定します。i_width
- マーカの物理サイズをmm単位で指定します。
addARMarker(java.lang.String, int, int, float)
とaddNyIdMarker(int, int)
関数を呼ぶたびにインクリメントされます。public int addPsARPlayCard(int i_psarid, int i_width)
i_psarid
- PSVitaのARプレイカードのIDを指定します。1から6間での数値です。i_width
- マーカの物理サイズをmm単位で指定します。
public PVector[] getMarkerVertex2D(int i_id)
public PMatrix3D getMarkerMatrix(int i_id)
PApplet.setMatrix(processing.core.PMatrix)
でProcessingにセットできます。
i_armk_id
- マーカidを指定します。
public double getConfidence(int i_id)
i_id
- マーカidを指定します。addARMarker(java.lang.String, int, int, float)
で登録したidである必要があります。
isExistMarker(int)
がtrueの時だけ正しい数を返します。public long getNyId(int i_id)
i_id
- マーカidを指定します。addNyIdMarker(int, int)
で登録したidである必要があります。
public boolean isExistMarker(int i_id)
i_id
- マーカidを指定します。
public int getLostCount(int i_id)
i_id
- マーカidを指定します。
setLostDelay(int)
で設定した範囲の値を返します。public long getLife(int i_id)
i_id
- マーカidを指定します。
public PVector marker2ScreenCoordSystem(int i_id, double i_x, double i_y, double i_z)
i_id
- マーカidを指定します。i_x
- マーカ座標系のX座標i_y
- マーカ座標系のY座標i_z
- マーカ座標系のZ座標
public PVector screen2MarkerCoordSystem(int i_id, int i_x, int i_y)
i_id
- マーカidを指定します。i_x
- スクリーン座標を指定します。i_y
- スクリーン座標を指定します。
public PImage pickupMarkerImage(int i_id, int i_x1, int i_y1, int i_x2, int i_y2, int i_x3, int i_y3, int i_x4, int i_y4, int i_out_w_pix, int i_out_h_pix)
detect(processing.core.PImage)
関数に入力した画像を使います。
座標点は、[mm]単位です。出力解像度はo_outの解像度に伸縮します。
座標点の指定順序は、右手系#CS_RIGHT_HAND
なら右上から反時計回りです。
座標点の指定順序は、左手系#CS_LEFT_HAND
なら左上から時計回りです。
i_id
- マーカIdを指定します。i_x1
- 頂点座標1です。i_y1
- 頂点座標1です。i_x2
- 頂点座標2です。i_y2
- 頂点座標2です。i_x3
- 頂点座標3です。i_y3
- 頂点座標3です。i_x4
- 頂点座標4です。i_y4
- 頂点座標4です。i_out_w_pix
- 出力画像のピクセル幅です。i_out_h_pix
- 出力画像のピクセル高さです。
public PImage pickupRectMarkerImage(int i_id, int i_l, int i_t, int i_w, int i_h, int i_out_w_pix, int i_out_h_pix)
i_id
- 画像を指定します。i_l
- 左上の点を指定します。i_t
- 左上の点を指定します。i_w
- 矩形の幅を指定します。i_h
- 矩形の高さを指定します。i_out_w_pix
- 出力画像のピクセル幅です。i_out_h_pix
- 出力画像のピクセル高さです。
|
||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |