2つの画像にアフィン変換を実装しようとしています。まず、両方の画像で一致するペアを見つけます。1つはズーム画像で、もう1つは参照画像です。ペアは次のように係数を返しました:
|1 0 | | x | | 1 |
A = | | X = | | B = | |
|0 0 | | y | | 221 |
The equation formed is X' = AX + B;
x_co_efficients[2] = (((x_new_Cordinate[2]-x_new_Cordinate[0])*(xCordinate[1]- xCordinate[0])) - ((x_new_Cordinate[1]-x_new_Cordinate[0])*(xCordinate[2] - xCordinate[0])))/
(((xCordinate[1]-xCordinate[0])*(yCordinate[2]-yCordinate[0])) - ((xCordinate[2]-xCordinate[0])*(yCordinate[1]-yCordinate[0])));
x_co_efficients[1] = ((x_new_Cordinate[1]-x_new_Cordinate[0]) - (yCordinate[1]-yCordinate[0])*(x_co_efficients[2]))/(xCordinate[1]-xCordinate[0]);
x_co_efficients[0] = x_new_Cordinate[0] - (((x_co_efficients[1])*(xCordinate[0])) + ((x_co_efficients[2])*(yCordinate[0])));
y_co_efficients[2] = (((y_new_Cordinate[2]-y_new_Cordinate[0])*(xCordinate[1]- xCordinate[0])) - ((y_new_Cordinate[1]-y_new_Cordinate[0])*(xCordinate[2] - xCordinate[0])))/
(((xCordinate[1]-xCordinate[0])*(yCordinate[2]-yCordinate[0])) - ((xCordinate[2]-xCordinate[0])*(yCordinate[1]-yCordinate[0])));
y_co_efficients[1] = ((y_new_Cordinate[1]-y_new_Cordinate[0]) - (yCordinate[1]-yCordinate[0])*(y_co_efficients[2]))/(xCordinate[1]-xCordinate[0]);
y_co_efficients[0] = y_new_Cordinate[0] - (((y_co_efficients[1])*(xCordinate[0])) + ((y_co_efficients[2])*(yCordinate[0])));
これらは、マッチングペアを使用して係数を決定するために使用される方程式です。方程式は同じ画像に対してはうまく機能しています。画像をズームするために、それらの係数が得られます。ここで問題となるのは、24ビットのバイナリイメージがあることです。参照に関して、そのイメージにアフィン変換を実装したいと思います。ここで、その画像の新しい座標を見つけて、その現在の値をその座標に変更しようとすると、非常に歪んだ画像が表示されます。変換が正しい場合、これは他の方法では得られないはずです。誰かが方程式を見て、2番目の画像にこれらの方程式を実装する方法を少し説明してください。私のコードはC++です。ありがとうございました。
私の参照画像は上にあります..そして私の比較画像は
私が得ている結果は、線だけの歪んだ画像です。
編集1
解法を行列に変更しました。これで正しい出力が得られますが、登録後に取得する画像は次のようになります。また、ピクセル値を取得するには、新しい座標に0〜320*240の制限を適用する必要があります。今、私の結果はこのようなものです。
編集2
コードを変更し、黒いピクセルなしでこの結果を取得しました。私は少し傾いています..しかし、与えられた画像のズーム効果を削除しました。