私は現在、EMGUを使用して変換を実装しようとしていますが、それがどのように機能するかについて頭を悩ませているようには見えません(オンラインの例はないようです)。
変換元 (および変換先) の 4 つのポイントを含むイメージを取得しましたが、他にどの変数が必要かはわかりませんが、「mapMat」を要求しますか?
これが私がこれまでに持っているものです:
float[,] tmp = {
{bottomLeft.x, bottomLeft.y},
{topLeft.x, topLeft.y},
{topRight.x, topRight.y},
{bottomRight.x, bottomRight.y}
};
Matrix<float> sourceMat = new Matrix<float>(tmp);
float[,] target = {
{0, height},
{0, 0},
{width, 0},
{width, height}
};
Matrix<float> targetMat = new Matrix<float>(target);
//mapMat = just a placeholder matrix?
Matrix<float> mapMat = new Matrix<float>(target);
CvInvoke.cvGetAffineTransform(sourceMat.Ptr, targetMat.Ptr, mapMat.Ptr);
ただし、これは機能しません。また、アフィン変換が最も理想的なソリューションであるかどうかもわかりませんでした。FindHomography とパースペクティブ変換についても読みましたが、ここで適用されるかどうかはわかりません。
私が達成したいターゲット変換は次のようなものです:
http://img832.imageshack.us/img832/5157/targettransform.png
どんな助けでも大歓迎です、
ありがとう