4

私はバイパッド ヒューマノイド ロボットを制御することを目的としたプロジェクトに取り組んでいます。残念ながら、ハードウェア リソースのセットは非常に限られています ( RB110 ボードとそのミニ PCI グラフィック カード)。画像処理タスクを CPU から可能なグラフィック カード プロセッサに移植することを計画していますが、これまで行ったことはありません... OpenCV を使用することをお勧めしますが、グラフィック カード プロセッサ (Volari Z9s) がフレームワークでサポートされていないため、不可能のようです。 . その後、Linux Journal で興味深い投稿を見つけました。作成者は OpenGL を使用して、v4l デバイスから取得したフレームを処理しました。

ハードウェア API と OpenGL/OpenCV の関係について少し混乱しています。GPU を利用するには、ハードウェアがグラフィック プログラミング フレームワーク (OpenGL/OpenCV) に対応している必要がありますか? そのような API はどこにありますか?

私は自分のハードウェアについてよくグーグルで調べましたが、残念ながらベンダー ( XGI Technology ) はどうにか絶滅しているようです...

4

2 に答える 2

5

GPU を利用するには、ハードウェアがグラフィック プログラミング フレームワーク (OpenGL/OpenCV) に対応している必要がありますか? そのような API はどこにありますか?

OpenCL と OpenGL はどちらも GPU ドライバーによってハードウェア命令に変換されるため、これらのフレームワークをサポートするオペレーティング システム用のドライバーが必要です。ほとんどの GPU ドライバーは、OpenGL のいくつかのバージョンをサポートしているため、動作するはずです。

OpenGL 標準はKhronos Groupによって管理されており、 neheでいくつかのチュートリアルを見つけることができます。

OpenGL の仕組み

OpenGL は三角形を入力として受け入れ、描画が発行されたときの状態に従ってそれらを描画します。ほとんどの OpenGL 関数は、この状態を操作することによって実行される操作を変更するためにあります。画像操作は、入力画像をテクスチャとしてロードし、テクスチャをアクティブにしていくつかの頂点を描画することで実行できます。これにより、新しい画像 (または、より一般的なデータの新しい 2D グリッド) が生成されます。

バージョン > 2 (または適切な ARB 拡張機能) から、画像に対して実行される操作は、頂点およびフラグメント シェーダーと呼ばれる GLSL プログラムで制御できます (シェーダーは他にもありますが、これらは最も古いものです)。頂点シェーダーは頂点ごとに 1 回呼び出され、この結果は補間されてフラグメント シェーダーに転送されます。新しいフラグメント (ピクセル) が結果に書き込まれるたびに、フラグメント シェーダーが呼び出されます。

さて、これは画像の読み取りと書き込みに関するものですが、オブジェクト検出にどのように使用するのでしょうか? Vertices を使用して、入力テクスチャをビューポート全体に広げます。RGB カラーを計算して結果に格納する代わりに、グレースケール画像/グラデーション画像を計算し、ピクセルが特定のサイズのサイクルの中心にある場合、各ピクセルのこれらのテクスチャをチェックするフラグメントシェーダーを作成できます。または、周囲に比べて勾配が比較的高い (優れた機能) か、適切な並列アルゴリズムを見つけることができる他の何かがあります。(これは自分ではしていません)

最終結果を CPU に読み戻す必要があります (これを行う前に、シェーダーを使用してデータを縮小できる場合があります)。OpenCL はグラフィックスのような感じが少なく、自由度が高いですが、サポートが少ないです。

于 2012-11-25T19:01:15.383 に答える
1

まず、シェーダーのサポート ( GLSLまたはasm )が必要です

通常の方法は、画像 (テクスチャ) を使用して全画面クワッドをレンダリングし、フラグメント シェーダーを適用することです。これは後処理と呼ばれ、ハードウェアが持つ命令セットと別の制限によって制限されます。基本レベルでは、別のデータセットを生成する並列方法で大規模なデータセットに単純な (単一関数) を適用できます。ただし、分岐 (サポートされている場合) は、GPU が複数のSIMD ブロックで構成されているため、最初のパフォーマンスの敵です。

于 2012-11-25T18:55:40.047 に答える