問題タブ [ransac]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
point-cloud-library - RANSAC平面フィッティング係数
平面を点群のセットに合わせようとしています。Point Cloud Library (PCL) を使用してみましたが、うまく機能します。私が知る必要があるのは、フィットした平面 (ax+by+cz+1=0) の係数 a、b、c をどのように取得できるかということです。簡単な方法はありますか?ここからいくつかの洞察を得ました: 3D 最小二乗平面
opencv - OpenCV: findHomography()/findFundamental() および RANSAC を使用して inlier ポイントを取得する方法
OpenCV は、RANSAC 関数自体を提供していません。少なくとも、それを呼び出して実行できる形式 (例: cv::ransac(...)
) では提供していません。RANSAC を使用できるすべての関数/メソッドには、それを有効にするフラグがあります。ただし、これは、ホモグラフィ/基本行列を推定した後に RANSAC が計算するインライアで実際に何か他のことをしたい場合には、常に役立つとは限りません。たとえば、Octave または同様のソフトウェア/ポイントのライブラリで素敵なプロットを作成し、フィルタリングされた一致の残りのセットなど
2 つの画像を一致させた後、一致のベクトルを取得します。それに加えて、もちろん、マッチング プロセスで使用された 2 セットのキーポイント (各画像に 1 つ) があります。一致とキーポイントを使用して、ポイントの 2 つのベクトル (例: cv::Point2f points
) を作成し、これらを に渡しますfindHomography()
。thisとthisの投稿から、その関数に渡すマスクを使用してインライアがどのように正確にマークされているかを発見しました。マスク内の各行は、インライア/アウトライアに関連しています。ただし、2 つのポイント セットから行インデックス情報を使用する方法がわかりません。OpenCV のソース コードを見ても、あまり理解できませんでした。(署名とマスク部分に関してはfindFundamental()
同様)で、彼らは使用しますfindHomography()
compressPoints()
、これは、入力として持っている 2 つのセット (ソース ポイントと宛先ポイント) を何らかの方法で 1 つに結合しているように見えます。マスクの性質を判断するためのテスト中に、2 セットの一致するポイントを試しました (標準手順に変換) cv::Keypoints
。cv::Point2f
各セットには 300 ポイントが含まれているため、合計で 600 ポイントになります。返されたマスクには 300 行が含まれています (このトピックでは値は重要ではありません)。
編集:これを書いているときに答えを発見しました(以下を参照)が、誰かがこの情報をできるだけ早くコンパクトな形式で必要とする場合に備えて、とにかくこの質問を投稿することにしました。RANSAC をサポートする OpenCV の関数の 1 つがまだ必要であることに注意してください。したがって、ポイントのセットはあるが、ホモグラフィや基礎行列を計算するつもりがない場合、これは明らかに方法ではありません。OpenCV の API で、この障害を回避するのに役立つ有用なものを見つけることができなかったので、使用する必要があります外部ライブラリ。
outliers - 角度データをフィッティングするための戦略
私は角度のセットを持っています。分布は大まかに次のように説明できます。
- 通常、正しい解に非常に近い (0.0 ~ 1.0 度離れた) いくつかの値があります。
- 反対方向であっても、正しい結果とはかけ離れたノイズの多い値もあります。
そのような問題に対する一般的な解決策/戦略はありますか?
多次元データの場合は RANSAC を使用しますが、1 次元データに Ransac を適用するのは珍しいという印象があります。別の問題は、角度の平均を計算することです。ベクトルを使用して角度の平均を計算する方法に関する他の投稿を読みましたが、両方の問題を既に処理する特定のフィッティング ソリューションがないのではないかと思います。
c++ - OpenCV C++ - findHomography 値の意味
私はすでにstackOverflaw、特にこのリンクをチェックしましたが、私の質問には答えませんでした。
2 つの画像を照合するために、Ransac と OpenCv を使用してホモグラフィを計算します。ここに対応するコード:
良い一致(まったく同じ写真)のために、私は自分の端末にこれを持っています:
ホモグラフィー3のサイズ
値 H : 1
値 H : 0
値 H : 0
値 H : 0
値 H : 1
値 H : 0
値 H : 0
値 H : 0
値 H : 1
行列式ホモグラフィ : 1
悪い一致(2つの異なる写真)の場合、私はこれを持っています:
ホモグラフィー3のサイズ
値 H : 0
値 H : 0
バルール H : 241
値 H : 0
値 H : 0
バルール H : 277
値 H : 0
値 H : 0
値 H : 1
行列式ホモグラフィ : 0.00533235
この結果はわかりません。誰かが私を説明できますか?これらの値を使用して、これが適切かどうかを判断したいと思います。最初のケースでは1つしかないと思っていましたが、そうではありませんでした。
私はホモグラフィとランソーをよく理解せずに使っていると思います。ネットで調べたのですが、ややこしいので説明もしっかりしていただけると助かります。
感謝。
c++ - ベクトルへの RANSAC の適用相似変換用
findHomography 関数で CV_RANSAC オプションを使用しましたが、estimateRigidTransform を使用したいと思います。したがって、CV_RANSAC を使用できなくなりました。
SIFT で特徴付けられた一致データの外れ値を排除し、estimateRigidTransform を適用したいと考えています。これどうやってするの?
matrix - 5 点必須行列推定のサンプソン誤差
エッセンシャル マトリックスを計算するために、Nister の 5 ポイント メソッドを使用しました。RANSAC と Sampson Error Threshold を使用して異常値の拒否をさらに改善しました。ランダムに 5 つのポイント セットを選択し、必須行列を推定して、一致のベクトルのサンプソン エラーを評価します。Sampson エラーがしきい値t
(0.01
私が使用している例では に設定) を下回るポイント座標は、インライアとして設定されます。このプロセスはすべての必須行列に対して繰り返され、インライアのスコアが最も高いものを保持します。
の値の大部分、d
サンプソン エラーのベクトルが大きすぎることに気付きました。たとえば、のサイズd
が (1x1437) の場合、
これは、length(g)=1425
7 つの値のみがこのしきい値のインライアであることを意味しますが、これは正しくありません!
しきい値を設定するには?サンプソン誤差値を解釈する方法は?
お願い助けて。ありがとうございました
algorithm - 立方体のRANSAC
通常のモデル、つまり球、線、平面の 3D 点群に RANSAC を正常に実装することができました。ただし、立方体、特に3Dボックスに対してそれを行う方法に頭を悩ませています。ポイントを使用してボックスをパラメータ化する方法がわかりません。
理想的には、パラメータ (Theta) として長さ、幅、高さ、中心を取得したいと考えています。立方体の表面の 3D ポイント クラウドから最小数のポイントを使用してこれらのパラメータを適合させる方法に混乱しています。(ポイント法線にもアクセスできます)。
たとえば、最終的に立方体の 6 つの面を推定したいとします。私はちょうど 3 つを推定し、6 つすべてを取得するためにそれらの平行ミラーを取ることができます。各面はおそらく平面として表され、定義する点と法線 (または代わりに 3 つの点) が必要です。ただし、各平面の法線はすべて互いに直交する必要があるため、これらの法線には制約があります。モデルの推定に制約を含める方法、またはこれが正しい方法であるかどうかはわかりません。
どんなアイデアでも大歓迎です。私は現在、Marco Zuliani の "RANSAC for Dummies" ツールボックスの実装を使用しています。
matlab - RANSAC 多変量回帰
堅牢な回帰手法として RANSAC を使用しています。ここで、Marco Zuliani による RANSAC を実行するきちんとしたツールボックスを見つけました。線と平面の例があるのを見ましたが、多変量回帰のように多くの独立変数がある場合はどうでしょうか。これを処理するためにコードを変更する方法はありますか?
これまでに試したことは、N 次元を処理するように 3D コードを変更することです。これを行うと、すべてのポイントがインライアとして取得され、おそらく正しくないことがわかります。これはデータの過適合です。以下は、私が行うのに疲れた変更です。
行test_RANSAC_plane.m
を追加しただけなのでX
の場合estimate_plane.m
:
の場合error_plane.m
:
python - scikit-image と RANSAC を使用して多項式の幾何学的変換をロバストに推定する
scikit-image skimage.transform および skimage.measure.ransac を使用して、多項式の幾何学的変換をロバストに推定したいと思います。
ransack documentation は、まさにそれを行う方法の非常に良い例を示していますが、Similarity Transform を使用しています。方法は次のとおりです。
SimilarityTransform の代わりにskimage.transform.PolynomialTransformを使用する必要があり、多項式の次数を指定できる必要があります。
しかし、RANSAC 呼び出しは入力として PolynomialTransform() を受け取りますが、これは入力パラメーターを受け取りません。目的の多項式の次数は、PolynomialTransform() の推定属性で実際に指定されています...したがって、RANSAC 呼び出しでは、多項式の次数のデフォルト値である 2 が使用されますが、3 次または 4 次の多項式が必要になります。
それは基本的なpythonの問題だと思いますか?前もって感謝します!