7

シナリオ

私の現在のプロジェクトの Flash フロント エンドは、Web サーバーがビデオに結合する必要がある画像を生成します。フレームレートとフレーム解像度の両方が十分に大きいため、画像シーケンスをバックエンドに送信することは (時間とクライアント帯域幅の両方で) 実行不可能です。代わりに、バックエンドでも画像描画を再作成しようとしています。

正確で遅い、または不正確で速い

問題は、これにはかなりのテクスチャ三角形の描画が含まれ、Python で見つかった 2 つの解決策 (ここそこ) は非常に非効率的であるため、描画に 1 フレームあたり約 60 秒かかり、なんと 7.5 時間の処理が必要になることです。 30 秒のクリップの時間。受け入れられない。

画像操作のために PHP モジュールを使用して ImageMagick にコマンドを送信すると、プロセス全体が超高速 (フレームあたり 10 分の 1 秒) になりますが、 ImageMagickはフロント エンドで行う方法で三角形を描画できないようです。最終結果が一致しません。受け入れられない。

私がここで尋ねているのは、この問題を解決する方法を知っている人がいるかということです。何らかの方法で Web サーバー上で実行する必要があります。

画像のワープ

フロントエンドのプロセスを説明しましょう。

  1. イメージ内の点に対して Delaunay 計算を実行して、均等に分散された三角形のメッシュを取得します。
  2. メッシュ内のポイント/頂点をオフセットして、画像を歪ませたり歪めたりします。
  3. 歪んだ三角形を新しいビットマップに描画します。

左が元の画像、右が歪んだ画像

ステップ 1 と 2 の結果 (座標) をバックエンドに送信して、歪んだ三角形を描画し、ディスク上の画像に保存します (またはビデオにフレームとして追加します)。しかし、その最後のステップは、私が助けを必要としているものです.

質問

ビットマップに三角形を描画できる ImageMagick の代替手段はありますか? これを可能にするCライブラリのような他のライブラリはありますか? それとも、Ruby などのバックエンド テクノロジを切り替えることで、この効果をより簡単に実現できるでしょうか? (.Net と Java は、残念ながら、現在のところ実際にはオプションではありません)

どうもありがとう。EP。

PS 再タグ付けの努力に感謝します。この質問にどのラベルを付けるかはよくわかりません。ありがとう!

4

2 に答える 2

0

Opencv は、さまざまな種類の画像ワーピングと合成をサポートする ac ライブラリです。

于 2012-10-23T06:38:29.113 に答える
0

両側で同じテクノロジーを使用すると、最も一貫した結果が得られ、アルゴリズムの同期が最も簡単になります。キャンバスを使用する場合は、サーバー上の node.js で nodecanvas を使用して、サーバー側で同じ方法で画像を生成することもできます。(すべてを切り替える必要はありません。ワープ サーバー プロセスを実行するだけでかまいません)

https://github.com/LearnBoost/node-canvas

于 2012-10-20T19:56:35.393 に答える