0

DOS 2Dコンピューターゲームのスクリーンショットとして順番に撮影された非常に多くの小さな画像(360x192)があります。それらはまともなオーバーラップを持っており、私はそれらを1つの大きなコンポジットにつなぎ合わせたいと思います。その性質上、後続の各画像は、次または前の画像よりもピクセル単位で完全にフィットします。そのため、回転、伸縮、歪みは必要ありません。

写真のパノラマをつなぎ合わせるためのソフトウェアはたくさんあります。しかし悲しいことに、それらのすべては、明示的にそうしないように指示されている場合でも、ある程度の歪みを適用します。

ピクセルパーフェクトなステッチをしようとするソフトウェアはありますか?

4

2 に答える 2

3

Mathematica 8は、それを行うための関数を備えています。

ImageAlign[img1, img2, "Transformation" -> "Translation"] 
FindGeometricTransform[img1, img2, "Transformation" -> "Translation"] 

オプション「変換」を「変換」に設定することにより、結果の変換に言及している「歪み」がないことが保証されます。

ドキュメント内のその他の例:

http://reference.wolfram.com/mathematica/ref/ImageAlign.html

http://reference.wolfram.com/mathematica/ref/FindGeometricTransform.html

Mathematicaをperlにリンクできることは知っていますが、まだ試していません。

編集:あなたが送ったリンクを使用して、私は次のことを思いついた。唯一の問題は、出力のサイズを事前に指定する必要があることです---NB最初の10枚の画像のみを試しました。

directory = "~/Downloads/done/";
files = FileNames["*.bmp", directory];

canvas = ImagePad[Import[files[[1]]], {{100, 100}, {500, 100}}, Transparent];
Do[
    i = Import[f];
    fun = FindGeometricTransform[canvas, i, "Transformation" -> "Translation"];
    If[Head@fun === FindGeometricTransform,
        Continue[]
    ];
    canvas = ImageCompose[
               canvas,
               ImagePerspectiveTransformation[i, fun[[2]], DataRange -> Full, PlotRange -> Transpose[{{0, 0}, ImageDimensions[canvas]}], Padding -> Transparent], 
               {1, 1, -1}],
 {f, files[[;; 10]]}]

ここに画像の説明を入力してください

于 2012-02-02T00:08:43.610 に答える
1

パノラマスティッチングを行うための最も信頼のおけるライブラリの1つは、PanoramaToolsです。Perlから移植または呼び出すことができます。

仕様が矛盾していることに注意してください。画像が100%直線的でない限り(つまり、画像と同じサイズのイメージャによって1:1で撮影された場合)、レンズの歪みを補正する必要があります。写真を(ピクセルごとに)正確につなぎ合わせるには、画像に歪みを補正する必要があります。

于 2012-02-02T00:44:13.060 に答える