3

アプリケーションPhotoFiltreには、画像の一部を引き伸ばすオプションがあります。長方形を選択すると、頂点をつかんで別の場所に移動し、四角形を作成できます。選択した画像部分が伸びます。願わくば、これらの画像が私の主張を少し明確にすることを願っています:

前

後

これを処理できる一般的なアルゴリズムはありますか? HTML5 キャンバスで同じ効果を得たいと考えています。画像とその結果のコーナー ポイントが与えられた場合、新しい四角形をきれいに塗りつぶすように引き伸ばされた画像を描画できるようにしたいと考えています。

少し前にたような質問をしましたが、解決策は、画像を三角形に分割し、各三角形を引き伸ばして、各 3 点が元の画像の 3 点に対応するようにすることでした。この手法はかなり高価であることが判明したため、これを達成するためのより一般的な方法があればいいのにと思います。

これを 3D レンダラーで使用したいのですが、(2D) 四角形で作業​​したいと考えています。

PhotoFiltre が内部的にも三角形を使用しているかどうか、または別の (安価な) アルゴリズムを使用してこのような画像を引き伸ばすかどうかはわかりません。

長方形の画像を引き伸ばして、4つの点が与えられた四角形を埋めるためのより安価な、またはより一般的な方法/アルゴリズムがあるかどうか、誰かがおそらく知っていますか?

4

2 に答える 2

2

通常の方法では、目的地から開始し、適切なグリッド サイズを選択してから、新しい形状の各ポイントについて、ソース イメージの対応するポイントを計算します (必要な品質に応じて補間を使用することもできます)。

于 2011-08-22T15:47:20.187 に答える
1

アフィン変換。

「引き伸ばされた」図形の 4 つのポイントと、一致する図形 (たとえば、四角形) の 4 つのポイントが与えられると、アフィン変換によって、必要な空間マッピングが提供されます。元の画像の各点 (x1,y1) に対して、2 番目の「引き伸ばされた」画像には対応する点 (x2,y2) があります。

引き伸ばされたイメージの各整数値のピクセル (x2, y2) に対して、アフィン変換を使用して、元のイメージで対応する実数値の点 (x1, y1) を見つけ、その色を (x2,y2) に適用します。

http://demonstrations.wolfram.com/AffineTransform/

Java およびその他の言語のサンプル コードがオンラインで見つかります。.NET には Matrix クラスがあります。

于 2012-01-01T04:16:38.257 に答える