public class MultiMarker extends NyARPsgBaseClass
修飾子とタイプ | フィールドと説明 |
---|---|
static double |
DEFAULT_CF_THRESHOLD
初期値定数。
|
static int |
DEFAULT_LOST_DELAY
初期値定数。
|
static int |
THLESHOLD_AUTO
敷居値の定数です。
|
cameraview, FRUSTUM_DEFAULT_FAR_CLIP, FRUSTUM_DEFAULT_NEAR_CLIP, VERSION
コンストラクタと説明 |
---|
MultiMarker(processing.core.PApplet i_applet,
int i_width,
int i_height,
double[] i_intrinsic_matrix,
double[] i_distortion_coeffs,
int i_screen_width,
int i_screen_height)
コンストラクタです。
|
MultiMarker(processing.core.PApplet i_applet,
int i_width,
int i_height,
double[] i_intrinsic_matrix,
double[] i_distortion_coeffs,
int i_screen_width,
int i_screen_height,
int i_cs,
int i_tm)
コンストラクタです。
|
MultiMarker(processing.core.PApplet i_applet,
int i_width,
int i_height,
double[] i_intrinsic_matrix,
double[] i_distortion_coeffs,
int i_screen_width,
int i_screen_height,
NyAR4PsgConfig i_config)
コンストラクタです。
|
MultiMarker(processing.core.PApplet i_applet,
int i_width,
int i_height,
java.lang.String i_cparam_file)
コンストラクタです。
|
MultiMarker(processing.core.PApplet i_applet,
int i_width,
int i_height,
java.lang.String i_cparam_file,
NyAR4PsgConfig i_config)
コンストラクタです。
|
修飾子とタイプ | メソッドと説明 |
---|---|
int |
addARMarker(processing.core.PImage i_img,
int i_patt_resolution,
int i_edge_percentage,
float i_width)
この関数は、i_imgの画像をARマーカパターンとして登録します。
|
int |
addARMarker(java.lang.String i_file_name,
float i_width)
この関数は、ARToolKitスタイルのマーカーをファイルから読みだして、登録します。
|
int |
addARMarker(java.lang.String i_file_name,
int i_patt_resolution,
float i_width)
この関数は、ARToolKitスタイルのマーカーをファイルから読みだして登録します。
|
int |
addARMarker(java.lang.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(processing.core.PImage i_image)
この関数は、画像からマーカーの検出処理を実行します。
|
void |
detect(processing.core.PImage i_image,
boolean i_with_loadpixels)
この関数は、画像からマーカーの検出処理を実行します。
|
void |
detect(PImageSensor i_source_image)
PImageSensor の内容で更新します。 |
void |
endTransform()
この関数は、
beginTransform(int) で設定したProcessingのProjectionMatrixとModelview行列を元の値に復帰します。 |
double |
getConfidence(int i_id)
この関数は、指定idのARマーカパターンの一致率を返します。
|
int |
getCurrentThreshold()
この関数は、現在の二値化敷居値を返します。
|
long |
getLife(int i_id)
この関数は、指定idのマーカのライフ値を返します。
|
int |
getLostCount(int i_id)
この関数は、指定idのマーカの認識状態を返します。
|
processing.core.PMatrix3D |
getMarkerMatrix(int i_id)
非推奨です。
|
processing.core.PVector[] |
getMarkerVertex2D(int i_id)
この関数は、マーカのスクリーン上の4頂点を返します。
|
processing.core.PMatrix3D |
getMatrix(int i_id)
この関数は、マーカの姿勢行列を返します。
|
long |
getNyId(int i_id)
この関数は、指定idのNyIdマーカから、現在のマーカIdを取得します。
|
boolean |
isExist(int i_id)
この関数は、指定idのマーカが有効かを返します。
|
boolean |
isExistMarker(int i_id)
非推奨です。
|
processing.core.PVector |
marker2ScreenCoordSystem(int i_id,
double i_x,
double i_y,
double i_z)
非推奨です。
|
processing.core.PVector |
object2ScreenCoordSystem(int i_id,
double i_x,
double i_y,
double i_z)
この関数は、idで示されるマーカ座標系の点をスクリーン座標へ変換します。
|
processing.core.PImage |
pickupImage(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頂点でかこまれた領域から、画像を取得します。
|
processing.core.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)
非推奨です。
|
processing.core.PImage |
pickupRectImage(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平面上の矩形領域から、画像を取得します。
|
processing.core.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)
非推奨です。
|
processing.core.PVector |
screen2MarkerCoordSystem(int i_id,
int i_x,
int i_y)
非推奨です。
|
processing.core.PVector |
screen2ObjectCoordSystem(int i_id,
int i_x,
int i_y)
この関数は、スクリーン座標をidで指定したマーカ平面座標へ変換して返します。
|
void |
setConfidenceThreshold(double i_val)
この関数は、ARマーカパターン一致率の閾値を設定します。
|
void |
setLostDelay(int i_val)
この関数は、マーカ消失時の遅延数を設定します。
|
void |
setThreshold(int i_th)
この関数は、画像2値化の敷居値を設定します。
|
drawBackground, getProjectionMatrix, setARClipping, setARPerspective, setBackgroundOrtho, setPerspective
public static final double DEFAULT_CF_THRESHOLD
public static final int DEFAULT_LOST_DELAY
public static final int THLESHOLD_AUTO
public MultiMarker(processing.core.PApplet i_applet, int i_width, int i_height, java.lang.String i_cparam_file, NyAR4PsgConfig i_config)
i_applet
- 親となるAppletオブジェクトを指定します。i_cparam_file
- ARToolKitフォーマットのカメラパラメータファイルの名前を指定します。i_width
- 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。i_height
- 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。i_config
- コンフィギュレーションオブジェクトを指定します。NyARException
public MultiMarker(processing.core.PApplet i_applet, int i_width, int i_height, java.lang.String i_cparam_file)
public MultiMarker(processing.core.PApplet i_applet, int i_width, int i_height, double[] i_intrinsic_matrix, double[] i_distortion_coeffs, int i_screen_width, int i_screen_height, NyAR4PsgConfig i_config)
i_applet
- 親となるAppletオブジェクトを指定します。このOpenGLのレンダリングシステムを持つAppletである必要があります。i_width
- カメラパラメータのサイズ値i_height
- カメラパラメータのサイズ値i_intrinsic_matrix
- 3x3 matrix
このパラメータは、OpenCVのcvCalibrateCamera2関数が出力するintrinsic_matrixの値と合致します。i_distortion_coeffs
- 4x1 matrix
このパラメータは、OpenCVのcvCalibrateCamera2関数が出力するdistortion_coeffsの値と合致します。i_screen_width
- 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。i_screen_height
- 入力画像の横解像度を指定します。通常、キャプチャ画像のサイズを指定します。i_config
- コンフィギュレーションオブジェクトを指定します。public MultiMarker(processing.core.PApplet i_applet, int i_width, int i_height, double[] i_intrinsic_matrix, double[] i_distortion_coeffs, int i_screen_width, int i_screen_height, int i_cs, int i_tm)
NyAR4PsgConfig(int,int)
で生成したコンフィギュレーションを指定したMultiMarker
です。
共通のパラメータ詳細はMultiMarker(PApplet, int, int, double[], double[], int, int, NyAR4PsgConfig)
を参照してください。i_cs
- NyAR4PsgConfig.NyAR4PsgConfig(int, int)
の第1パラメータです。i_tm
- NyAR4PsgConfig.NyAR4PsgConfig(int, int)
の第2パラメータです。public MultiMarker(processing.core.PApplet i_applet, int i_width, int i_height, double[] i_intrinsic_matrix, double[] i_distortion_coeffs, int i_screen_width, int i_screen_height)
NyAR4PsgConfig.CONFIG_OLD
を指定したMultiMarker
です。
パラメータ詳細はMultiMarker(PApplet, int, int, double[], double[], int, int, NyAR4PsgConfig)
を参照してください。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()
public void beginTransform(int i_id)
endTransform()
とペアで使ってください。
関数を実行すると、現在のModelView行列とProjection行列がインスタンスに保存され、新しい行列がセットされます。
これらを復帰するには、endTransform()
を使います。
復帰するまでの間は、再度beginTransform(int)
を使うことはできません。
i_id
- マーカidを指定します。public void endTransform()
beginTransform(int)
で設定したProcessingのProjectionMatrixとModelview行列を元の値に復帰します。
必ずbeginTransform(int)
とペアで使ってください。
public void detect(processing.core.PImage i_image)
detect(PImage,boolean)
の第二引数にtrueを設定したものと同じです。
i_imageに対して1度だけPImage.loadPixels()
を実行します。
PImage.loadPixels()
のタイミングをコントロールしたい場合は、detect(PImage,boolean)
を使用してください。i_image
- 検出処理を行う画像を指定します。public void detect(processing.core.PImage i_image, boolean i_with_loadpixels)
i_image
- 検出処理を行う画像を指定します。i_with_loadpixels
- 画像取得前にPImage.loadPixels()
を実行するかのフラグ値です。detect(PImage)
public void detect(PImageSensor i_source_image)
PImageSensor
の内容で更新します。
他のインスタンスで処理したPImageSensor
を使うことができます。i_source_image
- 入力画像を格納したセンサオブジェクトpublic int addARMarker(java.lang.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)
関数を呼ぶたびにインクリメントされます。
getMatrix(int)
,getConfidence(int)
,isExist(int)
,addARMarker(java.lang.String, int, int, float)
,
screen2ObjectCoordSystem(int, int, int)
,pickupImage(int, int, int, int, int, int, int, int, int, int, int)
,pickupRectImage(int, int, int, int, int, int, int)
のid値に使います。public int addARMarker(java.lang.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(processing.core.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(java.lang.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 processing.core.PVector[] getMarkerVertex2D(int i_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 int getLostCount(int i_id)
i_id
- マーカidを指定します。setLostDelay(int)
で設定した範囲の値を返します。public long getLife(int i_id)
i_id
- マーカidを指定します。public processing.core.PMatrix3D getMatrix(int i_id)
PApplet.setMatrix(processing.core.PMatrix)
でProcessingにセットできます。i_id
- マーカidを指定します。public boolean isExist(int i_id)
i_id
- マーカidを指定します。public processing.core.PVector object2ScreenCoordSystem(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 processing.core.PVector screen2ObjectCoordSystem(int i_id, int i_x, int i_y)
i_id
- マーカidを指定します。i_x
- スクリーン座標を指定します。i_y
- スクリーン座標を指定します。public processing.core.PImage pickupImage(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 processing.core.PImage pickupRectImage(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
- 出力画像のピクセル高さです。@Deprecated public boolean isExistMarker(int i_id)
isExist(int)
のエイリアスです。i_id
- @Deprecated public processing.core.PMatrix3D getMarkerMatrix(int i_id)
getMatrix(int)
のエイリアスです。i_id
- @Deprecated public processing.core.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)
@Deprecated public processing.core.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)
@Deprecated public processing.core.PVector screen2MarkerCoordSystem(int i_id, int i_x, int i_y)
@Deprecated public processing.core.PVector marker2ScreenCoordSystem(int i_id, double i_x, double i_y, double i_z)