私は画像認識(マーカー検出)に取り組んでおり、性能を向上させるために画像のダウンサンプリングの事前認識を検討していました。推論では、イメージをダウンサンプリングし、その上で検出アルゴリズムを実行し、ダウンサンプリング係数を使用してマーカ座標を補間します。私はダウンサンプリングのコストは、それが私たちのGPUによって常に行われているので些細なことだと思った。画像のダウンサンプリング性能
私はopencvを使ってダウンサンプルしてみましたが、改善が得られなかっただけでなく、実際にはもっと長い時間がかかりました。それで、私はCPUを作っていたからだと思ったので、私はopenglミップマップやシェーダーを使ってダウンサンプリングを検討しましたが、私が読んだところでは、一般的なイメージを半分にするのに数十ミリ秒決議。
私の質問は、ダウンサンプリングが明らかに簡単に行われている(画像ビューアの画像のサイズ変更やビデオゲームのテクスチャのサイズ変更を考えている)のはなぜですか?秘密の技術があるのですか、何かを理解していないだけですか?
テクスチャの大きさはどれくらいですか?どのようにそれらをGL APIにアップロードし、結果を読み返していますか?それは完全にアップロードとリードバックのコストは、ダウンサンプル自体ではなく、高価な部分です。 – solidpixel
@solidpixelは通常1280x720 - > 640x480の処理を行います。 glTexImage2Dを使用してRAMからロードし、ミップマップ(glGenerateMipmap)を生成し、次にglGetTexImageを使用して2番目のミップマップを取得します。 –
@AlexButeraなぜ、 'glGetTexImage'が必要ですか?これはあなたのアプローチが遅い正確な理由です。 AFAIRでは、ピクセルデータを前後に移動したり、新しいテクスチャオブジェクトを作成したりすることなく、必要なミップマップレベルを明示的に指定することができます。 – hidefromkgb