問題タブ [camera-calibration]
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.
c - チェス盤の寸法をピクセル単位で決定する
チェス盤で単一カメラの 2D 画像を調整するのと同様に、チェス盤 (または単一の正方形) の幅/高さをピクセル単位で決定したいと考えています。
私はカメラを地面に垂直に向けており、下の表面と完全に水平になるようにしています。カメラを使用して、連続するフレーム間の移動を決定しています (フーリエ位相相関を使用して正常に達成されています)。現時点では、結果は移動をピクセル単位で返しますが、キャリブレーションと同様の手法を使用したいと考えています。チェス盤は地面に平らで、画像の高さと幅に対してチェス盤のサイズをピクセル単位で自動的に決定します。
チェス盤のサイズがミリメートルでわかっているので、ピクセル単位を実際の単位であるミリメートルに変換できます。つまり、1 ピクセルは、地上からのカメラの高さに比例する距離を表します。これにより、ピクセル単位の移動をミリメートル単位の移動に変換し、カメラの高さを変更するたびに再調整できます。
これを達成するための推奨される方法は何ですか?確かに、単一カメラの 2D キャリブレーションよりも簡単に違いありません。
c++ - 3D 再構築のための OpenCV 未較正カメラ修正
OpenCV 2.4.2 を実行しています。
私のプロジェクトは、3D 顔識別で構成されています。
キャリブレーションされていないカメラで撮影した画像のペアから 3D モデルを作成しようとしています。
私の目標は、識別プロセスに使用する 3D 機能を取得することです。
カメラのキャリブレーションと修正を試みていますが、良い結果が得られませんでした。
次の手順を実行しました。
- 2 つの画像から抽出された SURF 特徴
- 2 つの画像特徴間の一致が見つかりました
- のおかげで基礎行列を計算しました
findFundamentalMat
stereoRectifyUncalibrated
ホモグラフィ行列を取得するために 使用されますwarpPerspective
最初の画像と最初のホモグラフィ行列と共に使用して、結果を確認します。
結果が悪くて、どうしたらいいのかわからない…
そのアルゴリズムは正しいですか?なにか提案を?
顔をより正確に識別するには、どのような 3D 機能を使用できますか?
ここにキャリブレーションコード:
opencv - キャリブレーションの結果を解釈する方法 (OpenCV)
チェス盤でキャリブレーションを実行しました (コーナーのサイズを mm で定義しました)。では、キャリブレーション (行列ロト変換) の結果は mm ですか?
opencv - OpenCV でのカメラ キャリブレーション中のエラー
opencv を使用してカメラのキャリブレーションを行っています。「クックブックプログラミング」で示したものと同じコードを使用しています。
チェス盤の写真をスマホで撮っています。次に、opencv プログラムを使用してカメラのキャリブレーションを行っています。非常に大きなチェス盤がある場合、プログラムは 1 セットの画像に対してのみ機能しました。他の一連のイメージでは機能せず、実行時エラー「Assertion failed」が表示されます
私のコードで何が問題なのかわかりません。コードは次のとおりです。
カメラ キャリブレーション クラスでは、画像は正常に開きますが、 findChessboardCorners 行で失敗します。. .
その点で私を助けてください。チェス盤のサンプル画像の 1 つを次に示します。アルゴリズムは、この最初の画像でコーナーを見つけることができません。. . . :-
matlab - カメラ キャリブレーション MATLAB ツールボックス
3D ポイントの再投影を実行する必要があります (Bundler からのデータが既にあります)。
固有のカメラ パラメーターを取得するために、MATLAB のカメラ キャリブレーション ツールボックスを使用しています。27 枚の画像からこのような出力が得られました (チェス盤。画像はさまざまな角度から撮影されています)。
注: 数値誤差は標準偏差の約 3 倍です (参考値)。
数値エラー、つまり焦点距離エラー +- [23.13283 22.92478] 、主点エラーなどについて疑問に思っています。これらのエラー番号が実際に何を表し、その影響は何ですか??
ピクセルエラーは本当に少ないです。
これまでのところ、再投影のために上記のデータから次のマトリックスを使用しています。
K=[ 2104.11696 0 969.15779; 0 2101.75357 771.30555;0 0 1]
上記の行列「K」は私には正しいようです。私が何か間違ったことをしているなら、私を修正してください...
お返事お待ちしております。
c++ - opencv findchessboardcorners アサーションの失敗
Windows 7 + MinGW 環境で OpenCV 2.4.2 を使用して、カメラのキャリブレーションのためにチェス盤のパターンを検出しようとしています。
findChessboard() 関数を呼び出すと、アサーション エラーが発生します。アサーションは、チェス盤がカメラの視界に入ったときにのみ発生します。
OpenCV エラー: setSize、ファイル C:\opencv\modules\core\src\matrix.cpp、行 115 でアサーションが失敗しました (s >= 0)
sample\cpp\calibration.exe も試してみましたが、同じ結果が得られました。サンプル ソース コードは次の場所にあります。
468 ~ 469 行を見てください。
私自身のコードは次のようになります。
前述のように、制御は cout ステートメントに到達することはありません。findChessboardCorners は何も検出しない (false を返す) か、アサートします (チェス盤のパターンが検出された場合)。
opencv - opencv でのオートフォーカス ウェブカメラによるステレオ設定
2 つの Web カメラを備えたステレオ設定があります。問題は、それらのカメラにオートフォーカス技術が搭載されている場合、問題が発生するかどうかです。はいの場合は、その解決策とともに問題を詳細に指定してください。
それはカメラのキャリブレーションに影響しますか?
opencv - opencvがカメラポーズを与える - rvecとtvec - 座標系が一致しない
カメラのポーズ (回転行列 + 平行移動ベクトル) を見つける必要があり、そのために を使用してcv2.solvePnP()
いますが、写真から取得した結果は一致しません。
デバッグするために、いくつかのオブジェクト ポイント (正方形の 4 つのコーナー)、いくつかのカメラ ポイント (焦点、主点、および仮想投影面の 4 つのコーナー) とパラメーターで構成される "デバッグ 3D シーン" を (numpy を使用して) 作成しました。 (焦点距離、初期方向)。
次に、3 つの軸回転行列を乗算して一般的な回転行列を作成し、この一般的な回転をカメラに適用し ( numpy.dot()
)、オブジェクト ポイントを仮想投影面に投影し (線平面交差アルゴリズム)、面内 2D 座標を計算します。 (点線距離) 投影平面軸まで。
cv2.Rodrigues(cv2.solvePnP(...))
これを行った後(回転行列を介してオブジェクトポイントからイメージポイントへ)、イメージポイントとオブジェクトポイントをフィードして、使用したものと「まったく同じではない」マトリックスを取得します。これは、転置と反対の信号を持つ要素(負対正)のためだけです、この関係を尊重:
回転行列の不一致はこのハックで「解決可能」ですが、TRANSLATION VECTOR は意味をなさない座標を提供します。
私の 3D モデル (利き手、軸の向き、回転の順序) と opencv で使用されるモデルとの間に不一致があると思われます。
- 私は OpenGL のような座標系を使用します (X は右に増加し、Y は上に増加し、Z は観察者に向かって増加します。
- 私は自分にとってより意味のある順序で回転を適用しました (すべて右手で、最初にグローバル Z を中心に、次にグローバル X を中心に、次にグローバル Y を中心に);
- イメージ プレーンは、オブジェクトとカメラの焦点の間にあります (リアル/CCD ではなく、仮想投影面)。
- 私のイメージ プレーン (仮想 CCD) の原点は左下隅です (Xpix は右に向かって増加し、Ypx は上に向かって増加します。
私の質問は次のとおりです。
回転行列の項が同一で、転置されているだけで、いくつかの項で信号が異なる場合、いくつかのopenCV
規則 (利き手、回転の順序、軸方向) を混乱させる可能性はありますか? そして、どうすればどれを見つけることができますか?
また、手作りの翻訳ベクトルを によって返された tvec に関連付ける方法はありsolvePnP
ますか? (もちろん、理想的には、最初に座標系を一致させることが最善です)。
どんな助けでも大歓迎です!
opencv - ウェブカメラのキャリブレーションが正しいことを確認する方法は?
私はカメラのキャリブレーション手法にまったく慣れていません... OpenCVチェス盤手法を使用しています... QuantumのWebカメラを使用しています...
ここに私の観察と手順があります..
- チェスの各正方形の辺 = 3.5 cm を維持しました。これは 7 x 5 のチェス盤で、6 x 4の内角があります。ウェブカメラから 1 ~ 1.5 m の距離で、さまざまなビュー/ポーズで合計 10 枚の画像を撮影しています。
キャリブレーションのために、BradskiによるLearning OpenCVの C コードに従っています。キャリブレーションのための私のコードは
/li>この関数を呼び出す前に、固有行列の対角線に沿って 1 番目と 2 番目の要素を 1 つにして、焦点距離の比率を一定に保ち、
CV_CALIB_FIX_ASPECT_RATIO
チェス盤の距離の変化で
fx
とはほぼ 1 でfy
変化しています。との値は 200 から 400 のオーダーであり、とは距離を変化させると 300 から 700 のオーダーです。fx:fy
cx
cy
fx
fy
現在、歪み係数を含めて良い結果が得られなかったため、すべての歪み係数をゼロにしました。元のイメージは、歪みのないイメージよりもハンサムに見えました!!
キャリブレーションを正しく行っていますか? ?以外のオプションを使用する必要がありCV_CALIB_FIX_ASPECT_RATIO
ます。はいの場合、どちらですか?
android - Androidでカメラを調整する
1.Androidでカメラのキャリブレーションマトリックスを取得する方法はありますか(Android APIを使用するだけです)?
2.APIから焦点距離と画角を見つけることができました。これらはカメラ行列を計算するのに十分ですか?