ランダムサンプルコンセンサス(RANSAC)は、外れ値を含む観測データのセットから数学モデルのパラメータを推定する反復法であり、外れ値は推定値に影響を及ぼさないものとします。したがって、外れ値検出法としても解釈できます。[1]これは、一定の確率でのみ妥当な結果を生成し、反復回数が増えるにつれてこの確率が高くなるという意味で非決定論的アルゴリズムです。このアルゴリズムは、 1981年にSRIインターナショナルのFischlerとBollesによって初めて公開されました。彼らはRANSACを使用して位置決定問題(LDP)を解きました。この問題の目的は、画像上に投影される空間内の点を、位置がわかっているランドマークのセットに決定することです。
RANSAC は、ランダムなサブサンプリングを繰り返し使用します。[2]基本的な前提は、データが「インライア」、つまり、ノイズの影響を受ける可能性があるものの、分布がモデルパラメータのセットによって説明できるデータと、モデルに適合しないデータである「アウトライア」で構成されていることです。アウトライアは、たとえば、ノイズの極端な値、誤った測定、またはデータの解釈に関する誤った仮説から発生する可能性があります。RANSAC はまた、(通常は小さな)インライアのセットが与えられた場合、このデータを最適に説明または適合するモデルのパラメータを推定できる手順が存在すると想定しています。
例
簡単な例として、2 次元で観測値のセットに線を当てはめることが挙げられます。このセットに、直線にほぼ当てはめることができる点であるインライアと、この直線に当てはめることができない点であるアウトライアの両方が含まれていると仮定すると、直線を当てはめる単純な最小二乗法では、インライアとアウトライアを含むデータに当てはまらない線が一般的に生成されます。これは、アウトライアを含むすべての点に最適に当てはめられているためです。一方、RANSAC は、アウトライアを除外し、計算にインライアのみを使用する線形モデルを見つけようとします。これは、線形モデルをデータのいくつかのランダム サンプルに当てはめ、データのサブセットに最もよく当てはまるモデルを返すことによって行われます。インライアは、インライアとアウトライアのランダムな混合よりも線形に関連している傾向があるため、インライアのみで構成されたランダム サブセットは、最もよくモデルに当てはまります。実際には、インライアのサブセットがランダムにサンプリングされる保証はなく、アルゴリズムが成功する確率は、データ内のインライアの割合といくつかのアルゴリズム パラメータの選択によって決まります。
-
線を当てはめる必要がある多くの外れ値を含むデータ セット。
-
RANSAC による近似線。外れ値は結果に影響しません。
概要
RANSAC アルゴリズムは、観測データをランダムにサンプリングしてモデルのパラメータを推定する学習手法です。データ要素に正常値と異常値の両方が含まれるデータセットが与えられた場合、RANSAC は投票方式を使用して最適なフィッティング結果を見つけます。データセット内のデータ要素は、1 つまたは複数のモデルに投票するために使用されます。この投票方式の実装は、ノイズの多い特徴が単一のモデルに一貫して投票しない (異常値が少ない)、および適切なモデルに同意するのに十分な特徴がある (欠損データが少ない) という 2 つの仮定に基づいています。RANSAC アルゴリズムは、基本的に、反復的に繰り返される 2 つのステップで構成されています。
- 入力データセットから、最小数のデータ項目を含むサンプル サブセットがランダムに選択されます。モデル パラメータを持つフィッティング モデルは、このサンプル サブセットの要素のみを使用して計算されます。サンプル サブセットの基数 (このサブセット内のデータ量など) は、モデル パラメータを決定するのに十分です。
- アルゴリズムは、データセット全体のどの要素が、最初のステップで取得された推定モデル パラメータによってインスタンス化されたモデルと一致しているかをチェックします。データ要素が、インライアの最大データ偏差を定義するエラーしきい値内でモデルに適合しない場合、そのデータ要素は外れ値と見なされます (この偏差を超えるデータ要素は外れ値です)。
フィッティングモデルで得られたインライアの集合はコンセンサスセットと呼ばれます。RANSAC アルゴリズムは、特定の反復で得られたコンセンサスセットに十分なインライアが含まれるまで、上記の 2 つの手順を繰り返します。
RANSAC アルゴリズムへの入力は、観測データ値のセット、観測に適合するモデル、および外れ値を定義するいくつかの信頼度パラメータです。前述の RANSAC アルゴリズムの概要よりも詳細に言えば、RANSAC は次の手順を繰り返すことで目的を達成します。
- 元のデータのランダムなサブセットを選択します。このサブセットを仮想インライアと呼びます。
- モデルは仮想的なインライアのセットに適合されます。
- 次に、すべてのデータが適合モデルに対してテストされます。モデル固有の損失関数に従って推定モデルに適合するすべてのデータ ポイント (元のデータ) は、コンセンサス セット(つまり、モデルのインライア セット)と呼ばれます。
- 十分な数のデータ ポイントがコンセンサス セットの一部として分類されている場合、推定モデルは適度に良好です。
- コンセンサス セットのすべてのメンバーを使用してモデルを再推定すると、モデルが改善される可能性があります。モデルがコンセンサス セットにどの程度適合しているかを示す尺度としての適合品質は、反復が進むにつれてモデルの適合性を高めるために使用されます (たとえば、この尺度を次の反復での適合品質基準として設定するなど)。
十分に優れたモデル パラメータ セットに収束するために、この手順は一定回数繰り返され、そのたびに、コンセンサス セットに含まれるポイントが少なすぎるためにモデルが拒否されるか、コンセンサス セットのサイズが以前のコンセンサス セットよりも大きい改良モデルが生成されます。

擬似コード
一般的な RANSAC アルゴリズムは、次の疑似コードとして動作します。
与えられた条件:
データ – 観察結果の集合。
モデル – 観測されたデータ ポイントを説明するモデル。
n – モデルパラメータを推定するために必要なデータポイントの最小数。
k – アルゴリズムで許可される反復の最大回数。
t – モデルに適合するデータ ポイント (インライア) を決定するためのしきい値。
d – モデルがデータに適合していることを示すために必要な近いデータ ポイント (インライア) の数。
戻る:
bestFit – データに最も適合するモデル パラメータ (適切なモデルが見つからない場合は null)。
反復回数 = 0
ベストフィット = null
bestErr = 非常に大きい // このパラメーターは、反復が進むにつれて、モデル パラメーターを最適なデータ適合にシャープ化するために使用されます。
反復回数< k の間
maybeInliers := データからランダムに選択された n 個の値
maybeModel := maybeInliers に適合するモデルパラメータ
確認済みInliers := 空集合
データ内の各点について、
点がtより小さい誤差でmaybeModelに適合する場合、
確認済みインライアにポイントを追加
end if
end for
if confirmInliers の要素数が d より大きい場合
// これは、適切なモデルが見つかった可能性があることを意味します。
// では、それがどれだけ優れているかをテストします。
betterModel := confirmInliers 内のすべてのポイントに適合したモデルパラメータ
thisErr := betterModel がこれらの点にどれだけ適合しているかの尺度
thisErr < bestErrの場合
ベストフィット:=より良いモデル
ベストエラー:=このエラー
終了の場合
終了の場合
反復回数を増やす
終了しながら
ベストフィット
を返す
サンプルコード
疑似コードを反映した Python 実装。これはLinearRegressor最小二乗法に基づいて を定義し、RANSAC2D 回帰問題に適用し、結果を視覚化します。
コピー インポート からコピーインポート
numpyをnpとしてインポート numpy.randomからdefault_rngをインポートrng = default_rng ()
class RANSAC :
def __init__ ( self , n = 10 , k = 100 , t = 0.05 , d = 10 , model = None , loss = None , metric = None ):
self . n = n # `n`: パラメータを推定するデータポイントの最小数
self . k = k # `k`: 許容される最大反復回数
self . t = t # `t`: ポイントが適切に適合しているかどうかを判断するしきい値
self . d = d # `d`: モデルが適切に適合していると判断するために必要な近いデータポイントの数
self . model = model # `model`: `fit` および `predict` を実装するクラス
self . loss = loss # `loss`: ベクトルを返す `y_true` および `y_pred` の関数
self . metric = metric # `metric`: `y_true` と `y_pred` の関数で、浮動
小数点数を返します。self.best_fit = None
self.best_error = np.inf
def fit ( self , X , y ):
for _ in range ( self . k ):
ids = rng . permutation ( X . shape [ 0 ])
maybe_inliers = ids [: self . n ]
maybe_model = copy ( self . model ) . fit ( X [ maybe_inliers ], y [ maybe_inliers ])
閾値 = (
self . loss ( y [ ids ][ self . n :], maybe_model . predict ( X [ ids ][ self . n :]))
< self . t
)
inlier_ids = ids [ self . n :][ np . flatnonzero (閾値) . flatten ( )]
inlier_ids.size > self.dの場合: inlier_points = np.hstack ( [ maybe_inliers , inlier_ids ] ) better_model = copy ( self.model ) .fit ( X [ inlier_points ] , y [ inlier_points ] )
this_error = self.metric ( y [ inlier_points ] , better_model.predict ( X [ inlier_points ] ) )
this_error < self.best_errorの場合: self.best_error = this_error self.best_fit = better_model
自分自身を返す
def predict ( self , X ) :
self.best_fit.predict ( X )を返す
square_error_lossの定義( y_true , y_pred ):
return ( y_true - y_pred ) ** 2
def mean_square_error ( y_true , y_pred ):
戻り値 np . sum ( square_error_loss ( y_true , y_pred )) / y_true . shape [ 0 ]
クラス LinearRegressor :
def __init__ ( self ):
self . params = None
def fit ( self , X : np . ndarray , y : np . ndarray ):
r , _ = X . shape
X = np . hstack ([ np . ones (( r , 1 )), X ])
self . params = np . linalg . inv ( X . T @ X ) @ X . T @ y
return self
def predict ( self , X : np . ndarray ):
r , _ = X . shape
X = np . hstack ([ np . ones (( r , 1 )), X ])
return X @ self . params
__name__ == "__main__"の場合:
回帰変数 = RANSAC (モデル= LinearRegressor ()、 損失= square_error_loss 、 メトリック= mean_square_error )
X = np です。配列([ - 0.848 、- 0.800 、- 0.704 、- 0.632 、- 0.488 、- 0.472 、- 0.368 、- 0.336 、- 0.280 、- 0.200 、- 0.00800 、- 0.0840 、0.0240 、0.100 、0.124 、0.148 、0.232 、0.236 、0.324 、0.356 、0.368 、0.440 、0.512 、0.548 、0.660 、0.640 、0.712 、0.752 、0.776 、0.880 、0.920 、0.944 、- 0.108 、- 0.168 、- 0.720 、- 0.784 、- 0.224 、- 0.604 、- 0.740 、- 0.0440 、0.388 、- 0.0200、0.752、0.416 、-0.0800 、-0.348、0.988、0.776、0.680、0.880 、-0.816 、-0.424 、-0.932、0.272 、-0.556、- 0.568 、- 0.600 、- 0.716 、- 0.796 、- 0.880 、- 0.972 、- 0.916、0.816、0.892、0.956、0.980、0.988、0.992、0.00400 ] ) . reshape ( - 1 , 1 ) y = np . array ( [
-0.917 、-0.833 、-0.801 、-0.665 、-0.605 、-0.545 、-0.509 、-0.433 、-0.397 、-0.281 、-0.205 、-0.169 、-0.0531 、-0.0651、0.0349、0.0829、0.0589、0.175、0.179、0.191、0.259、0.287、0.359、0.395、0.483、0.539、0.543 、0.603 、0.667 、0.679 、0.751 、0.803 、- 0.265 、- 0.341 、0.111 、- 0.113 、0.547 、0.791 、0.551 、0.347 、0.975 、0.943 、- 0.249 、-0.769 、-0.625 、-0.861 、-0.749 、-0.945 、-0.493、0.163 、-0.469、0.0669、0.891、0.623 、-0.609 、-0.677 、- 0.721 , - 0.745 , - 0.885 , - 0.897 , - 0.969 , - 0.949 , 0.707 , 0.783 , 0.859 , 0.979 , 0.811 , 0.891 , - 0.137 ] ) 。reshape ( - 1 , 1 )
回帰変数. fit ( X , y )
matplotlib.pyplot をpltとして インポートします。plt.style.use ( " seaborn - darkgrid " ) fig 、ax = plt.subplots ( 1,1 ) ax.set_box_aspect ( 1 )
plt .散布図( X , y )
line = np.linspace ( -1,1 , num = 100 ) .reshape ( -1,1 ) plt.plot ( line , regressor.predict ( line ) , c = " peru " ) plt.show ( )

RANSAC。オレンジ色の線は、反復アプローチによって見つかった最小二乗パラメータを示しており、外れ値ポイントを正常に無視しています。パラメータ
データ ポイントがモデルに適合するかどうかを判断するしきい値 ( t )、およびモデルがデータに適合していることを示すために必要なインライア ( t内でモデルに適合したデータ ポイント) の数 ( d ) は、アプリケーションとデータセットの特定の要件に基づいて決定され、場合によっては実験評価に基づいて決定されます。ただし、反復回数 ( k ) は、以下に示すように、必要な成功確率 ( p ) の関数として大まかに決定できます。
p を、 RANSAC アルゴリズムが実行後に少なくとも 1 つの有用な結果を提供する望ましい確率とします。極端な場合 (導出を簡素化するため)、RANSAC は、モデル パラメータが推定されるデータ セットからn個のポイントを選択するときに、ある反復で入力データ セットからインライアのみを選択した場合に、成功した結果を返します (つまり、選択されたn個のデータ ポイントはすべて、これらのポイントによって推定されるモデルのインライアです)。 を、単一のデータ ポイントが選択されるたびにインライアを選択する確率とします。これは、おおよそ次のようになります。
- = データ内の正常値の数 / データ内の点の数
よくあるケースとしては、RANSAC アルゴリズムを実行する前にデータ内のインライアの数が不明なため、 が事前によくわからないというケースがありますが、大まかな値を与えることはできます。 の大まかな値が与えられ、モデルの推定に必要なn個のポイントが独立して選択されると大まかに仮定すると (各データ ポイントの選択によって、次の選択で選択するデータ ポイント候補の数が減るため、これは大まかな仮定です)、n個のポイントすべてがインライアである確率は で、 n個のポイントのうち少なくとも 1 つがアウトライアである確率は です。この場合、この点集合から推定されるモデルは不適切です。この確率のk乗(アルゴリズム実行の反復回数) は、アルゴリズムがインライアであるn個のポイント集合を決して選択しない確率であり、これは極端な場合の (アルゴリズムがモデル推定に成功しない確率) と同じです。したがって、
両辺の 対数をとると、
この結果は、n 個のデータ ポイントが独立して選択される、つまり、一度選択されたポイントは置き換えられ、同じ反復で再度選択できることを前提としています。これは多くの場合、合理的なアプローチではなく、ポイントが置き換えられずに選択される場合のkの導出値は上限としてとらえる必要があります。たとえば、上の図に示されているデータ セットに適合する線を見つける場合、RANSAC アルゴリズムは通常、各反復で 2 つのポイントを選択し、maybe_modelポイント間の線として計算するため、2 つのポイントが別個であることが重要になります。
さらなる信頼性を得るために、標準偏差またはその倍数をkに加えることができる。kの標準偏差は次のように定義される。
利点と欠点
RANSAC の利点は、モデルパラメータの堅牢な推定[3]ができること、つまり、データセットにかなりの数の外れ値が存在する場合でも、高精度でパラメータを推定できることです。RANSAC の欠点は、これらのパラメータを計算するのにかかる時間に上限がないことです (枯渇を除く)。計算される反復回数が制限されている場合、得られる解は最適ではない可能性があり、データにうまく適合する解でさえない可能性があります。このように、RANSAC はトレードオフを提供します。反復回数を増やすと、合理的なモデルが生成される可能性が高くなります。さらに、RANSAC は、中程度に汚染されたセットであっても常に最適なセットを見つけることができるわけではなく、通常、インライアの数が 50% 未満の場合はパフォーマンスが低下します。最適 RANSAC [4]は、これらの問題の両方を処理するために提案され、インライア率が 5% 未満の場合でも、汚染がひどいセットの最適なセットを見つけることができます。 RANSAC のもう 1 つの欠点は、問題固有のしきい値を設定する必要があることです。
RANSAC は、特定のデータ セットに対して 1 つのモデルしか推定できません。2 つ (またはそれ以上) のモデル インスタンスが存在する場合の 1 モデル アプローチでは、RANSAC はいずれか 1 つを見つけられない可能性があります。ハフ変換は、複数のモデル インスタンスが存在する場合に便利な、代替の堅牢な推定手法の 1 つです。マルチモデル フィッティングの別のアプローチは PEARL [5]として知られており、RANSAC と同様にデータ ポイントからのモデル サンプリングとインライアの反復再推定を組み合わせ、マルチモデル フィッティングを全体的なソリューションの品質を表すグローバル エネルギー関数による最適化問題として定式化します。
アプリケーション
RANSAC アルゴリズムは、コンピューター ビジョンでよく使用されます。たとえば、対応問題を同時に解決し、ステレオ カメラのペアに関連する基本行列を推定する場合などです。 「動きからの構造」、「スケール不変特徴変換」、「画像ステッチング」、「剛体動きセグメンテーション」も参照してください。
開発と改善
1981 年以来、RANSAC はコンピュータ ビジョンと画像処理コミュニティの基本的なツールとなっています。2006 年、アルゴリズムの 25 周年を記念して、国際コンピュータ ビジョンおよびパターン認識会議(CVPR) でワークショップが開催され、元のアルゴリズムに対する最新の貢献と変更点がまとめられました。主な目的は、アルゴリズムの速度、推定ソリューションの堅牢性と精度を向上させ、ユーザー定義の定数への依存を減らすことです。
RANSAC は、特定のパラメータ セットでインスタンス化されたモデルにどのデータ ポイントが適合するかを定義する正しいノイズしきい値の選択に左右される可能性があります。このようなしきい値が大きすぎると、すべての仮説が同等にランク付けされる傾向があります (良好)。一方、ノイズしきい値が小さすぎると、推定されたパラメータが不安定になる傾向があります (つまり、インライア セットにデータを追加または削除するだけで、パラメータの推定値が変動する可能性があります)。この望ましくない影響を部分的に補正するために、Torr らは、MSAC (M-estimator SAmple and Consensus) と MLESAC (Maximum Likelihood Estimation SAmple and Consensus) と呼ばれる RANSAC の 2 つの修正を提案しました。[6]主なアイデアは、コンセンサス セット (つまり、モデルと特定のパラメータ セットに適合するデータ) の品質を、その尤度を計算して評価することです (Fischler と Bolles による元の定式化では、ランクはそのようなセットの基数でした)。入力データセットに関連する事前確率を考慮したMLESACの拡張は、Tordoffによって提案されています。[7] 結果として得られたアルゴリズムは、Guided-MLESACと呼ばれています。同様に、Chumは、入力データに関する事前情報がわかっている場合、つまりデータがインライアかアウトライアかがわかっている場合に、サンプリング手順をガイドすることを提案しました。提案されたアプローチは、PROSAC(PROgressive SAmple Consensus)と呼ばれています。[8]
Chum らは、計算負荷を軽減して適切なコンセンサス セットを識別するために、RANSAC のランダム化バージョンである R-RANSAC [9]も提案しました。基本的な考え方は、最初に、データセット全体ではなく、ポイントのセットを減らしただけを使用して、現在インスタンス化されているモデルの良さを評価することです。適切な戦略は、データセット全体の適合を評価する場合と、モデルを簡単に破棄できる場合を高い信頼性で判断します。このアプローチの影響は、インライアの割合が大きい場合に、より関連性が高いと考えるのが妥当です。Chum らが提案したタイプの戦略は、プリエンプション スキームと呼ばれます。Nistér は、シーンの構造とカメラの動きをリアルタイムで堅牢に推定できる Preemptive RANSAC [10]と呼ばれるパラダイムを提案しました。このアプローチの中心的な考え方は、固定数の仮説を生成して、絶対的な品質メトリックではなく、生成された仮説の品質に関して比較が行われるようにすることです。
他の研究者は、ノイズスケールが不明であったり、複数のモデルインスタンスが存在するといった困難な状況に対処しようとした。最初の問題は、Wang と Suter の研究で取り組まれている。[11] Toldo らは、各データを、その点にフィットするランダムモデルのセットの特性関数で表す。すると、複数のモデルが、同じモデルをサポートする点をグループ化するクラスターとして明らかになる。J リンクと呼ばれるクラスタリングアルゴリズムでは、モデルの数を事前に指定する必要はなく、手動でパラメータを調整する必要もない。[12]
RANSACは、入力測定値が外れ値によって破損し、測定誤差のガウス分布に依存するカルマンフィルタアプローチが失敗する運命にある再帰的状態推定アプリケーションにも適応されています。このようなアプローチはKALMANSACと呼ばれています。 [13]
関連する方法
- MLESAC (最大尤度推定サンプルコンセンサス) –データがサンプル適合モデルから生成された尤度を最大化します。例:正常値と異常値の混合モデル
- MAPSAC (Maximum A Posterior Sample Consensus) – MLESACを拡張して、適合するパラメータの事前確率を組み込み、事後確率を最大化します。
- KALMANSAC –動的システムの状態の因果推論
- 再サンプリング(統計)
- ホップ拡散モンテカルロは、グローバルジャンプとローカル拡散を含むランダム化サンプリングを使用して、RANSACの各ステップでサンプルを選択し、非常に広いベースライン画像間のエピポーラ幾何学を推定します。[14]
- FSASAC(データフィルタリングとシミュレーテッドアニーリングに基づくRANSAC )[15]
参照
注記
- ^ Data Fitting and Uncertainty、T. Strutz、Springer Vieweg (第 2 版、2016)。
- ^ Cantzler, H. 「Random Sample Consensus ( RANSAC )」。エディンバラ大学、情報科学部門、知覚・行動・行動研究所。CiteSeerX 10.1.1.106.3035 。2023年2月4日時点のオリジナルよりアーカイブ。
- ^ Robust Statistics、Peter. J. Huber、Wiley、1981年(2004年にペーパーバックで再出版)、1ページ。
- ^ Anders Hast、Johan Nysjö、Andrea Marchetti (2013)。「最適RANSAC - 最適セットを見つけるための繰り返し可能なアルゴリズムに向けて」。WSCGジャーナル21 (1): 21–30。
- ^ Hossam Isack、Yuri Boykov (2012)。「エネルギーベースの幾何学的マルチモデルフィッティング」。International Journal of Computer Vision 97 (2: 1): 23–147。doi :10.1007/s11263-011-0474-7。
- ^ PHS Torr および A. Zisserman、MLESAC: 画像ジオメトリの推定に応用できる新しい堅牢な推定器[リンク切れ ]、Journal of Computer Vision and Image Understanding 78 (2000)、第 1 号、138–156 ページ。
- ^ BJ Tordoff および DW Murray、「Guided-MLESAC: マッチング事前確率を使用した高速画像変換推定」、IEEE Transactions on Pattern Analysis and Machine Intelligence 27 (2005)、第 10 号、1523–1535 ページ。
- ^ PROSAC とのマッチング - プログレッシブ サンプル コンセンサス、コンピュータ ビジョンとパターン認識に関する会議の議事録 (サンディエゴ)、第 1 巻、2005 年 6 月、220 ~ 226 ページ
- ^ O. Chum および J. Matas、「Td,d テストによるランダム化 RANSAC」、第 13 回英国マシン ビジョン カンファレンス、2002 年 9 月。http://www.bmva.org/bmvc/2002/papers/50/
- ^ D. Nistér、「ライブ構造と動きの推定のためのプリエンプティブRANSAC」、IEEE International Conference on Computer Vision(ニース、フランス)、2003年10月、pp. 199–206。
- ^ H. Wang および D. Suter、「コンピュータビジョンのための堅牢な適応スケールパラメトリックモデル推定」、IEEE Transactions on Pattern Analysis and Machine Intelligence 26 (2004)、第 11 号、1459–1474
- ^ R. Toldo および A. Fusiello、「J-linkage による堅牢な複数構造推定」、European Conference on Computer Vision (フランス、マルセイユ)、2008 年 10 月、pp. 537–547。
- ^ A. Vedaldi、H. Jin、P. Favaro、および S. Soatto、「KALMANSAC: 合意による堅牢なフィルタリング」、国際コンピュータビジョン会議 (ICCV) の議事録、第 1 巻、2005 年、633 ~ 640 ページ
- ^ Brahmachari, Aveek S.; Sarkar, Sudeep (2013 年 3 月)。「非常 に広いベースライン画像間のエピポーラ幾何 学推定のためのホップ拡散モンテカルロ」。IEEE Transactions on Pattern Analysis and Machine Intelligence。35 ( 3): 755– 762。doi : 10.1109 /TPAMI.2012.227。PMID 26353140。S2CID 2524656 。
- ^ W. Ruoyan および W. Junfeng、「FSASAC: データ フィルターとシミュレーテッド アニーリングに基づくランダム サンプル コンセンサス」、IEEE Access、vol. 9、pp. 164935-164948、2021、doi: 10.1109/ACCESS.2021.3135416。
参考文献
- Martin A. Fischler & Robert C. Bolles (1981 年 6 月)。「ランダム サンプル コンセンサス: モデル フィッティングのパラダイムと画像分析および自動地図作成への応用」(PDF)。Comm . ACM。24 ( 6 ): 381– 395。doi :10.1145/358669.358692。S2CID 972888。2014年 12 月10日のオリジナルから アーカイブ(PDF) 。
- David A. Forsyth & Jean Ponce (2003)。『コンピュータビジョン、現代的なアプローチ』。Prentice Hall。ISBN 978-0-13-085198-7。
- Richard Hartley およびAndrew Zisserman (2003)。『Multiple View Geometry in Computer Vision (第 2 版)』。ケンブリッジ大学出版局。
- Strutz, T. (2016).データフィッティングと不確実性(加重最小二乗法とその先への実践的な入門)第2版、Springer Vieweg. ISBN 978-3-658-11455-8。
- PHS Torr & DW Murray (1997). 「基本行列を推定するための堅牢な方法の開発と比較」International Journal of Computer Vision . 24 (3): 271– 300. doi :10.1023/A:1007927408552. S2CID 12031059.
- Ondrej Chum (2005)。「ランダム サンプルとコンセンサスによる 2 ビュー ジオメトリ推定」(PDF)。博士論文。
- Sunglok Choi、Taemin Kim、Wonpil Yu (2009)。「RANSAC ファミリーのパフォーマンス評価」(PDF) 。British Machine Vision Conference (BMVC) の Proceedings に掲載。2020年 8 月 31 日時点のオリジナル(PDF)からアーカイブ。2010 年 10 月 1 日に取得。
- Anders Hast、Johan Nysjö、Andrea Marchetti (2013)。「最適RANSAC -最適セットを見つけるための繰り返し可能なアルゴリズムに向けて」(PDF)。WSCGジャーナル。21 (1): 21-30。
- Hossam Isack、Yuri Boykov (2012)。「エネルギーベースの幾何学的マルチモデルフィッティング」(PDF)。International Journal of Computer Vision。97 (2: 1): 23– 147。CiteSeerX 10.1.1.381.2434。doi : 10.1007 / s11263-011-0474-7。S2CID 5461268 。
