问题标签 [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.

0 投票
1 回答
2416 浏览

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。如果在项目中单独使用文件系统库,则可以毫无问题地编译和运行,但结合上面的其他两个库,我会收到以下错误:

等等

关于为什么这些库可能相互冲突的任何提示?编译器没有通过文件系统的包含(即第 18 行)。

0 投票
2 回答
28915 浏览

c++ - 向量幅度的特征数学库中的成员函数

我一直在尝试找到一种方法来计算 Eigen 中向量的大小,但我无法做到。有人可以向我提供函数名称,如果它不存在吗?

我可以创建一个可以完成这项工作的全局方法,但我不想这样做。

0 投票
1 回答
953 浏览

image - 特征变换:为什么高特征值表示文本区域?

许多论文提到,在图像被划分为 mxm 矩阵块之后,文本区域会产生从灰度像素值计算的高特征值。此外,特征值是图像纹理“粗糙度”的度量。

这与获取文本有什么关系?文本区域一般有背景和前景两种颜色,笔划颜色统一。这种粗糙度在哪里 - 可能有许多其他特征会更粗糙并触发高特征值。有人能指出从哪里得到连接这些东西的数学吗?

编辑: 一些论文包括在自然场景中的文本检测上下文中提到特征值。

  1. 一个实时检测和跟踪文本的框架使用灰度图像上的特征变换。

  2. 一种基于特征值的视频文本检测方法提到从梯度图像的协方差矩阵计算特征值。

0 投票
1 回答
26193 浏览

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,但这也不起作用。

想法?

谢谢,

大卫

0 投票
6 回答
17304 浏览

c++ - 使用 Eigen 的性能比使用我自己的类更差

几周前,我问了一个关于矩阵乘法性能的问题。

有人告诉我,为了提高程序的性能,我应该使用一些专门的矩阵类而不是我自己的类。

StackOverflow 用户推荐:

  • uBLAS
  • 本征
  • 布拉斯

起初我想使用 uBLAS 但是阅读文档发现这个库不支持矩阵矩阵乘法。

毕竟我决定使用 EIGEN 库。所以我把我的矩阵类Eigen::MatrixXd换成了——但事实证明,现在我的应用程序比以前运行得更慢了。使用 EIGEN 之前的时间是 68 秒,在将我的矩阵类交换为 EIGEN 矩阵程序之后运行 87 秒。

花费最多时间的程序部分看起来像这样

如您所见,这些函数执行了大量的矩阵运算。这就是为什么我认为使用 Eigen 会加快我的应用程序的速度。不幸的是(正如我上面提到的),该程序运行速度较慢。

有没有办法加快这些功能?

也许如果我使用 DirectX 矩阵运算,我会获得更好的性能??(但是我有一台带集成显卡的笔记本电脑)。

0 投票
1 回答
1084 浏览

c++ - 头文件中的错误 C2719 - 未使用 stl:vector

我在编译代码时遇到了一些问题。由于错误 C2719,有几个函数无法编译 - 带有 __declspec(align('16')) 的形式参数不会对齐。

VisualStudio 无法编译的函数是这样的

这很奇怪,因为之前我使用的是 MatrixXd 而不是 Vector2d 和 Matrix2d 并且一切都很好。更重要的是,这是使用 stl:vector 时的常见问题 - 但是正如您所看到的,此函数不会将 stl:vector 作为参数。

我能做些什么来解决这个问题?

0 投票
1 回答
1239 浏览

iphone - 使用矢量化为 iPhone 编译 Eigen 库

我正在努力为 iPhone 4 编译 Eigen 库,它有一个带有 armv7 指令集的 ARM 处理器。到目前为止,当我指定预处理器定义 EIGEN_DONT_VECTORIZE 时,一切正常。但由于一些性能问题,我想使用 armv7 优化的代码。

无论我使用哪种编译器 LLVM-GCC 4.2 或 LLVM CLang 2.0,我总是遇到编译错误。我发现(或者更好地认为),LLVM-GCC 4.2 是访问这些 ARM-NEON 特定指令的唯一方法。

当我不设置 EIGEN_DONT_VECTORIZE (并向 gcc 提供 -mfloat-abi=softfp -mfpu=neon)时,我收到以下 gcc 编译器错误:

src/m3CoreLib/Eigen/src/Core/arch/NEON/PacketMath.h:89:错误:'__ extension__'之前的预期不合格ID

我已阅读有关使用“旧”gcc 4.2 的问题以及使用较新版本 gcc 的建议。我不确定,但我相信由于应用商店的批准,这不是一个选择。我还能做些什么来为 iPhone 编译它。?有谁解决了这个问题吗?

谢谢,凯

0 投票
3 回答
3567 浏览

c++ - 小数的特征稀疏矩阵乘法误差

我在我的程序中使用 C++ Eigen 3 库。特别是,我需要将两个 Eigen 稀疏矩阵相乘并将结果存储到另一个 Eigen 稀疏矩阵中。但是,我注意到如果 Eigen 稀疏矩阵的某些条目小于 1e-13,则结果中的相应条目将为 0 而不是一个小数字。假设我将一个稀疏单位矩阵 a 和另一个稀疏矩阵 b 相乘。如果b的左上项,即b(0,0)小于1e-13,如9e-14,则结果c的左上项c=a*b,即c(0,0),是 0 而不是 9e-14。

这是我测试的代码,

这是奇怪的输出

一个

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 的源代码,但找不到这两个数字在矩阵中相乘的位置。任何想法?

0 投票
1 回答
4409 浏览

c++ - 在 Eigen 中乘以变换和矩阵类型

对我来说,这应该只是工作,所以事实并非如此,几乎可以肯定意味着我是错的。尽管原则上 Transform< double, 3, Affine > 与 Matrix< double, 4, 4 > 相同,但它们不能合理地一起使用:

结果在最后一行出现'no match for operator='错误,并且就地乘法运算符导致相同的结果,尝试使用 Affine3d 初始化 Matrix4d 也不起作用。有人知道如何以任何有用的方式实际使用 Transform 类吗?

谢谢,凸轮

0 投票
1 回答
463 浏览

c++ - MVP矩阵不能在着色器之外工作?

奇怪的问题在这里,我一直在将我当前的项目从 Qt 的本机矩阵/向量类转换为 Eigen 的,但我遇到了一个我无法解决的问题。

我这样计算着色器的 MVP:

矩阵反转 Z 轴,因为我所有的diag数学运算都看到相机的目标矢量指向屏幕,但 OpenGL 则相反。无论如何,这是可行的,因为视口的 OpenGL 端出现并运行良好。

我的视口输出的另一面是通过 QtpaintEvent()系统进行的 2D 叠加绘制,例如网格标记。所以我使用相同的矩阵在相机的剪辑空间中查找 3D 位置:

除了我得到完全错误的结果:

在这个例子中,我期望的东西更像outVec: 0.55 -0.15. 我的 GLSL 顶点着色器执行如下计算:

在上面的例子transform中是恒等式,所以我看不出两个投影之间有什么区别,但结果却完全不同!我知道这是一个很长的镜头,但任何人都可以看到我要去哪里错了吗?

更新:

为了比较,我重新实现了旧的(工作的)Qt 代码:

对比:

对我来说,它们是相同的,但只有 Qt 版本有效!