回答:
注:サイズ変更された画像で使用する座標によって異なります。私はあなたがゼロベースのシステムを使用していると仮定しています(C
、とは異なりなどMatlab
)、0は0に変換されます。また、座標間のスキューがないと仮定しています。スキューがある場合は、同様に乗算する必要があります
短い答え:あなたはどの座標系を使用していると仮定すると、はい、あなたべき乗算によって0.5。
詳細な回答世界座標の点をカメラ座標 変換する関数は次のとおりです。
ここで、、座標が均質であるからです。
要するに、これはと書くことができます
ここで、は上記の2つの行列の積で、はi 'です。マトリックスの行。(積はスカラー積です)。
画像のサイズ変更は次のように考えることができます:
かくして
マトリックス形式に戻すと、次のようになります。
等しい
詳細については、Forsythの第3章-幾何学的なカメラのキャリブレーションを参照してください。
Andreyは、彼の解法では0が0に変換されると仮定していると述べました。ピクセル座標を使用している場合、画像のサイズを変更するときにこれはおそらく当てはまりません。本当に必要な唯一の仮定は、画像変換を3x3マトリックスで表現できることです(Andreyが示したように)。カメラマトリックスを更新するには、画像変換を表すマトリックスを事前に乗算するだけです。
[new_camera_matrix] = [image_transform]*[old_camera_matrix]
例として、係数画像の解像度を変更する必要があり、インデックス付きピクセル座標0を使用しているとします。あなたの座標は関係によって変換されます
これは行列で表すことができます
最終的なカメラマトリックスは