質問: OpenCV初心者です。 カメラのキャリブレーションを試してみました。 マニュアルにある通り、チェスボードを写して、キャリブレーションする関数に入れてパラメータを求めました。 そのパラメータを、撮影した写真にUndistortionしました。 色々分からないところはあったものの、サンプルコードやマニュアルを見て、一応、ここまではできました。 写真の四隅のひずみも、それなりに補正されています。 ただ、若干補正されすぎのように思うのです。 そこで、ひずみ補正のかかり具合?を調整することができるかどうか教えて頂きたいです。 よく、画像ソフトで、曲がり具合などの加工を手動で調整したりするものがあると思うのですが、そのイメージで、自分で効目を調整したいのです。 マニュアルを見ても、そのような説明は見つからず、できるかどうかも分かりません。 Undistortion関数にはパラメータを渡すだけなので、もしかして、キャリブレーションのパラメータを自分で編集するのでしょうか? または、キャリブレーションを求める時に、何か、調整可能なものでもあるのでしょうか? ご存知の方がいらっしゃいましたらよろしくお願いいたします。 追記 回答をいただいて、本を読んでみました。 関数に入れるパラメータは変えて見るのですが、あまり良い方向には向かわず。 具体的にどこをどう、、という方法にたどり着けず、 もしかして、opencvのソースを変更しなくてはならないのか、、、とおののいています。 あと数日、オープンにさせてください。
回答: キャリブレーション及び'undistortion関数'についてはO'REILLYなどの専門書を参考にされる事をお勧めします。質問の中にもありますが、あくまで関数ですので引数を変えると結果も変わります。またキャリブレーションのアルゴリズムを理解されるとより正確なパラメーターを取得できます。例えばレンズの特性。通常のレンズや魚眼レンズ。またひずみの少ないシュミットレンズなどを理論値ではなく実測で試し最良のパラメーターを取得。またキャリブレーションに用いるチェスボードの完成度を上げるなど行うとパラメーターも変化します。質問にありますように手入力で値を変える(値の意味と範囲を理解するのには最良な手法と思いますが)。また画像全体ではなく、ひずみの多い部分を棄却するロジックを考え実装する。などで精度は向上します。