問題タブ [eigen]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
boost - Boost、OpenCV、および Eigen ライブラリ間の競合?
私の質問は、Boost および OpenCV ライブラリと Eclipse CDR の静的リンクに多少関連しています。エラー、ここで説明されているよりも少し多くのことをしようとしています: BoostとOpenCVを使用してフォルダー内のすべての画像を読み取ることができるプログラムを作成するには? つまり、Boost のファイルシステム ライブラリを使用してディレクトリを走査し、OpenCV を使用してイメージ ファイルに対して何らかの処理を行います。
ファイルシステムとその他のライブラリを MinGW でコンパイルし、Windows 7 64 ビット システムで Eclipse CDT を使用して Boost 1.45、OpenCV 2.2、および Eigen2 を実行しようとしました。プロジェクトで単独で使用する場合、ファイルシステム ライブラリは問題なくコンパイルおよび実行されますが、上記の他の 2 つのライブラリと組み合わせると、次のエラーが発生します。
等
これらのライブラリが互いに競合する理由についてのヒントはありますか? コンパイラは、ファイルシステムのインクルードを通過していません (つまり、18 行目)。
c++ - ベクトルの大きさの Eigen 数学ライブラリのメンバー関数
Eigen でベクトルの大きさを計算する方法を見つけようとしましたが、できませんでした。存在しない場合にのみ関数名を教えてもらえますか?
仕事をするグローバルメソッドを作成することはできますが、私はしたくありません。
image - 固有変換:高い固有値がテキストの領域を示すのはなぜですか?
多くの論文は、画像がmxm行列のブロックに分割された後、テキスト領域がグレーレベルのピクセル値から計算された高い固有値を生じさせると述べています。また、その固有値は、画像のテクスチャの「粗さ」の尺度です。
それはテキストの取得とどのように関連していますか?テキスト領域は通常、背景と前景の2色で、均一な色の文字ストロークが使用されます。この粗さはどこにありますか?より粗く、高い固有値をトリガーする他の多くの機能が存在する可能性があります。誰かがこれらのものをつなぐ数学をどこで手に入れるかを指摘できますか?
編集: 自然なシーンでのテキスト検出のコンテキストで固有値に言及するいくつかの論文が含まれています。
テキストのリアルタイム検出と追跡に向けたフレームワークは、グレースケール画像でEigentransformを使用します。
ビデオでのテキスト検出への固有値ベースのアプローチは、勾配画像の共分散行列から固有値を計算することに言及しています。
cmake - CMakeはEigen3を見つけることができません
FindEigen3.cmake をソース ディレクトリにコピーしました。
次に追加しました:
CMakeLists.txt に追加して、CMake にこの .cmake ファイルを使用するように指示します。
次に、私の CMakeLists.txt で次のことを行います。
環境変数 EIGEN3_INCLUDE_DIR を /home/doriad/src/eigen に設定しています
CMake を実行すると、次のようになります。
これは Mercurial からの新しいクローンであるため、バージョンは少なくとも 3 である必要があります。
助言がありますか?
モジュールパスを間違って設定すると、いくつかの手がかりが得られます。
ただし、これらのファイルは、Eigen3 のソース ディレクトリまたはビルド ディレクトリのいずれにも見つかりませんでした。Eigen3_DIR=/home/doriad/src/eigen を設定しようとしましたが、それもうまくいきませんでした。
考え?
ありがとう、
デビッド
c++ - 自分のクラスを使用するよりも Eigen を使用するとパフォーマンスが低下する
数週間前、私は行列乗算のパフォーマンスについて質問しました。
プログラムのパフォーマンスを向上させるには、独自のクラスではなく、特殊な行列クラスを使用する必要があると言われました。
StackOverflow ユーザーの推奨事項:
- ユーブラス
- 固有値
- ブラス
最初は uBLAS を使用したかったのですが、ドキュメントを読んでいると、このライブラリは行列 - 行列の乗算をサポートしていないことがわかりました。
結局、EIGEN ライブラリを使用することにしました。そのため、マトリックス クラスを次のEigen::MatrixXd
ように変更しましたが、アプリケーションの動作が以前よりもさらに遅くなることが判明しました。EIGEN を使用する前の時間は 68 秒で、マトリックス クラスを EIGEN マトリックス プログラムに交換した後は 87 秒間実行されました。
最も時間がかかるプログラムの部分はそのように見えます
と
ご覧のとおり、これらの関数は多くの行列演算を実行します。そのため、Eigen を使用するとアプリケーションが高速化されると考えました。残念ながら (上で述べたように)、プログラムの動作は遅くなります。
これらの機能を高速化する方法はありますか?
DirectX の行列演算を使用すると、パフォーマンスが向上するのではないでしょうか?? (ただし、グラフィックカードが統合されたラップトップを使用しています)。
c++ - ヘッダー ファイルのエラー C2719 - stl:vector を使用しない場合
コードのコンパイルに問題があります。エラー C2719 が原因でコンパイルできない関数がいくつかあります - __declspec(align('16')) を持つ仮パラメーターは整列されません。
VisualStudioがコンパイルできない関数はそのように見えます
以前は Vector2d と Matrix2d の代わりに MatrixXd を使用し、すべて問題なかったという事実のため、これは非常に奇妙です。さらに、これは stl:vector を使用する場合の一般的な問題です - ただし、ご覧のとおり、この関数はパラメータとして stl:vector を取りません。
これを修正するにはどうすればよいですか?
iphone - ベクトル化を使用して iPhone 用の Eigen ライブラリをコンパイルする
armv7 命令セットを備えた ARM プロセッサを搭載した iPhone 4 用の Eigen ライブラリのコンパイルに苦労しています。プリプロセッサ定義 EIGEN_DONT_VECTORIZE を指定すると、これまでのところすべて正常に動作します。しかし、いくつかのパフォーマンスの問題により、armv7 に最適化されたコードを使用したいと考えています。
LLVM-GCC 4.2 と LLVM CLang 2.0 のどちらのコンパイラを使用しても、常にコンパイル エラーが発生します。私は、LLVM-GCC 4.2 がこれらの ARM-NEON 固有の命令にアクセスする唯一の方法であることを理解しました (またはそう考えたほうがよいでしょう)。
EIGEN_DONT_VECTORIZE を設定しない (および -mfloat-abi=softfp -mfpu=neon を gcc に指定しない) と、次の gcc コンパイラ エラーが発生します。
src/m3CoreLib/Eigen/src/Core/arch/NEON/PacketMath.h:89: エラー: '__ extension__' の前に unqualified-id が必要です
「古い」gcc 4.2 の使用に関する問題と、新しいバージョンの gcc を使用するようにという推奨事項について読みました。よくわかりませんが、アプリストアの承認のため、これはオプションではないと思います. iPhone用にコンパイルするために他にできることはありますか? これを解決した人はいますか?
ありがとう、ケイ
c++ - 少数の固有疎行列乗算エラー
プログラムで C++ Eigen 3 ライブラリを使用しています。特に、2 つの固有疎行列を乗算し、結果を別の固有疎行列に格納する必要があります。しかし、固有疎行列の一部のエントリが 1e-13 より小さい場合、結果の対応するエントリは小さい数値ではなく 0 になることに気付きました。疎単位行列 a と別の疎行列 b を乗算するとします。b の左上のエントリ、つまり b(0,0) が 1e-13 より小さい場合 (9e-14 など)、結果の左上のエントリ c=a*b、つまり c(0,0)、 9e-14 ではなく 0 です。
ここに私がテストするコードがあります、
ここに奇妙な出力があります
a
1 0
0 1
b
ゼロ以外のエントリ:
(9e-14,0) (1,1)
列ポインタ:
0 1 $
9e-14 0
0 1
c
0 0
0 1
a2
1 0
0 1
b2
9e-14 0
0 1
c2
9e-14 0
0 1
密行列の乗算は問題ないことがわかりますが、疎行列の結果は左上のエントリで間違っており、b は奇妙な出力形式になっています。
Eigen のソース コードをデバッグしましたが、行列で 2 つの数値が乗算されている場所が見つかりませんでした。何か案が?
c++ - Eigen での Transform 型と Matrix 型の乗算
私にとってこれはうまくいくはずなので、うまくいかないという事実は、ほぼ間違いなく私が間違っていることを意味します。原則として Transform< double, 3, Affine > は Matrix< double, 4, 4 > と同じですが、それらをうまく一緒に使用することはできません。
最後の行で 'no match for operator=' エラーが発生し、インプレース乗算演算子も同じ結果になり、Affine3d で Matrix4d を初期化しようとしても機能しません。Transform クラスを実際に便利な方法で使用する方法を知っている人はいますか?
ありがとう、カム
c++ - MVPマトリックスがシェーダーの外で機能していませんか?
ここで奇妙な問題があります。現在のプロジェクトをQtのネイティブ行列/ベクトルクラスからEigenに変換していますが、解決できない問題が発生しました。
したがって、シェーダーのMVPを計算します。
私のdiag
すべての計算ではカメラの照準ベクトルが画面を指していることがわかるため、マトリックスはZ軸を反転しますが、OpenGLはその逆を行います。とにかく、ビューポートのOpenGL側が表示され、正常に動作するため、これは機能します。
ビューポート出力の反対側は、QtのpaintEvent()
システムを介した2Dオーバーレイペイントです。たとえば、グリッドラベリングです。したがって、同じマトリックスを使用して、カメラのクリップスペース内の3D位置を見つけます。
私が完全に間違った結果を得る以外は:
この例では、のようなものを期待していましoutVec: 0.55 -0.15
た。私のGLSL頂点シェーダーは次のような計算を実行します。
上記の例transform
ではアイデンティティであるため、2つの予測の違いはわかりませんが、結果はまったく異なります。私はこれがロングショットであることを知っていますが、誰かが私がどこで間違っているのかを見ることができますか?
アップデート:
比較のために、古い(動作している)Qtコードを再実装しました。
対:
私にとっては同じですが、Qtバージョンのみが機能します!