2009-04-02 7 views
3

産業用ビジョンアプリケーションの開発者として私は6000x4000ピクセル以上のようなかなりぎこちないイメージを頻繁に持っています。DirectXで大きな画像を高速で表示できますか?

カメラと画像処理が新しい画像の安定した流れに取り組んでいる間(この処理が主な仕事です)、私はユーザーが他の画像を並行して快適に見ることを許可したいと思います。

プロセッサ(GDIなど)でこれを行うと、あまりにも多くのパフォーマンスを盗みます。たとえば、画像の解析には0.2秒かかりますが、ユーザーに移動してそれに潜んでもらうことはできませんが、1回のズーム(コントロールに合わせてサイズを変更)で表示するには0.8秒かかります。

Photoshopが、どのように私は自分のコードでは、この上で試すことができた場合、誰もが私のアイデアを与えることができる場合、私は疑問に思ったグラフィックスカードの非常に高速なメモリと処理の助けによって表示し、ズームすることができますので: プッシュデータをグラフィックに(これは私の76MBのrgbデータにどれくらいの時間がかかりますか?)ユーザーの操作のためにユーザーがコントロール/カードにズームしたり移動したりすることなく、いくつかのコントロールに表示させます。

2D-rgbイメージで移動したりサイズを変更したりするだけで、3Dルックは不要です。 目標は、プロセッサ負荷の少ない高速で快適な表示を可能にすることです。

==>これは可能ですか(テクスチャなど)? ==>現在のローエンド3Dカードの256MB以上の制限はありますか? ==>誰かが(データのコピー、ズーム)期待できる期間を提案することができますか?

答えて

1

ピクセル形式とは何ですか?あなたのサイズは8ビットのRGBで動作するようですが、6000x4000ピクセルの1つのイメージでは約69 MBのスペースが必要です。したがって、Windowsや他のアプリケーションからのオーバーヘッドがあまりないと仮定すれば、ローエンドのグラフィックスカードのテクスチャメモリに収まるはずです。確かに、グラフィックカードのメモリにアップロードするのに時間がかかります。それはシステムの負荷やハードウェア/バス構成によって非常に異なる可能性が高いため、見積もりを提供するのは難しいでしょう。

私は、テクスチャサイズの最大限の制限がさらに心配です。私は今日のハイエンドカードがテクスチャ内の4096x4096テクセルで最大限になると考えています。つまり、イメージを単一のテクスチャに収めることができません。

これをテストするためのDirectXの設定はあまり厳しくすべきではありません。多くのチュートリアルがあります。 Hereは、テクスチャでレンダリングする方法を示すクイックリンクです。同じチュートリアルシリーズの前の部分をチェックして、ものを初期化する方法を見てください。

+0

イメージはR、G、Bの8ビットグレーの3つのプレーンとして利用できますが、他の方法で混ぜても問題ありません。 メモリはメモリにはフィットしますが、単一のテクスチャにはフィットしませんか? 2つの飛行機をオプションで並んで配置しているのか、それともアーチファクトをもたらすのでしょうか? リンクとアイデアありがとう! –

+0

イメージデータを細分化して1つまたは複数のプレーンを隣り合わせに配置するのは明らかな解決策です。アーチファクトを避けるために、テクスチャフィルタリングモードを設定することが可能でなければならない。それがあなたを助けたなら、あなたはその答えをupvoteすることを歓迎します。 :) – unwind

0

この種のタスク専用に設計されたフォーマットを使用することをお勧めします。 です。JPEG2000です。あなたが望むfeaturesはROI(関心領域)とプログレッシブトランスミッションと呼ばれます。それが必要な場合は無損失になる可能性があります。

+0

アイディアをありがとうが、JPEG2000へのデータのコーディングには約5秒かかります。時間がかかりすぎてプロセッサの負荷がかかるので、これはオプションではありません。 –

+0

JPEG2000にそのデータを保存またはキャッシュできませんか? – vartec

+0

BTW。あなたはそれをGPUで加速することができます。例えば、 http://www.cse.cuhk.edu.hk/~ttwong/software/dwtgpu/dwtgpu.html – vartec

2

最大テクスチャサイズ(カードによって異なります)によって制限されるため、大きなイメージをいくつかの小さなテクスチャに細分する必要があります。あなたのビデオメモリに実際のテクスチャデータを取得するには、カードがAGPまたはPCI-Eである限り、すばやくでなければなりません。

0

これはDirect3Dで実行できます。テクスチャ付きクワッドを描画することで、パンやズームのための大きな画像を簡単に処理できます。

イメージのサイズと画面のサイズ(6Kx4Kディスプレイはありません)のために、大きなイメージを必要に応じてテクスチャにページングするシステムを作成したいと思うでしょう。あなたの入力データのサイズを考えると、あなたがカードにどれくらい速く入ることができるかという支配的な要因は、ディスクとカードの間のI/O帯域幅です。ポイント・サンプリングされた低解像度バージョンを計算するだけでなく、2次元で空間コヒーレンスを活用するイメージをディスクに格納する方法(つまり、スキャンライン・ストレージ・レイアウトではなくタイル・ストレージ・レイアウト)を作成することは有益です。圧縮されていないRGBでこれをすべて行うことができます。これを行うにはJPEG2000は必要ありません。イメージを選択すると、このデータストレージを優先度の低いバックグラウンドプロセスとして実行できます。最初に画面上に表示される内容をカードのできるだけ早くカードに入れてから、ディスク上で再構成してストリーミング/ズームを速くします。

関連する問題