したがって、私は OpenCV (2.1) に非常に慣れていないので、覚えておいてください。
そこで、私が使用している安価な Web カメラ (広角アタッチメント付き) を調整し、チェッカーボード キャリブレーション方法を使用して固有係数と歪み係数を生成しました。
その後、問題なくこれらの値をフィードバックしてイメージ マップを生成し、それをビデオ フィードに適用して受信イメージを修正します。
しかし、私は問題に遭遇します。画像をゆがめたり修正したりするときに、いくつかの歪んだセクションを作成し、画像をフォーマットして黒い領域を切り取ります。私の質問は、黒い領域のある領域を含めて、歪んだ画像全体を表示できるかということです。以下は、私の用語が間違っていた場合に伝えようとしていた、歪んだセクションを持つ黒い領域の例です。
私が話している地域をよりよく伝える画像はここにあります!この画像はこの投稿で発見されました。
現在: cvRemap() は、基本的に上記のリンクされた画像の黄色のボックスを返しますが、取得しようとしている関連データがあるため、画像全体を表示したいと考えています。
私が試したこと: イメージマップに縮尺変換を適用して、イメージ全体(引き伸ばされた部分を含む)をフレームに収める
CvMat *intrinsic = (CvMat*)cvLoad( "Intrinsics.xml" );
CvMat *distortion = (CvMat*)cvLoad( "Distortion.xml" );
cvInitUndistortMap( intrinsic, distortion, mapx, mapy );
cvConvertScale(mapx, mapx, 1.25, -shift_x); // Some sort of scale conversion
cvConvertScale(mapy, mapy, 1.25, -shift_y); // applied to the image map
cvRemap(distorted,undistorted,mapx,mapy);
cvConvertScale は、x/y シフトを正しく調整したと思うと (推測/チェック)、画像マップを何らかの形で歪め、修正を役に立たなくしています。ここにはいくつかの数学が含まれている可能性がありますが、私は正しく理解していません。
この問題を解決するための他の提案はありますか、それとも私が間違っている可能性がありますか? また、歪みの問題を修正するために独自のコードを作成しようとしましたが、OpenCV はそれをうまく行う方法を既に知っているとだけ言っておきましょう。