gpt4 book ai didi

c++ - 如何计算二维数组的结构张量?

转载 作者:行者123 更新时间:2023-11-30 04:17:52 29 4
gpt4 key购买 nike

如何从二维数组(即结构张量场)计算结构张量?

我无法弄清楚我在实现过程中做错了什么。在我的例子中,2D 数组是一个 2D 灰度图像,这里是我使用 C++ 和 Eigen 所做的事情的一般概述:

// the 2D grey-scale image, represented by a 2D array of doubles
ArrayXXd img;

// compute the gradient vector field, which produces a 2D array of 2D vectors
typedef Array<Vector2d, Dynamic, Dynamic> ArrayXXv2;
ArrayXXv2 g = gvf(img);

// compute the outer-product of each element in g to get a 2x2 matrix, e.g.,
Matrix<double, 2, 2> st00 = g(0,0) * g(0,0).transpose();

st00 现在是 img(0,0) 的结构张量,不是吗?

最佳答案

从你看来,结构张量并不是简单地在一个像素u上计算的,

enter image description here

但是,

enter image description here

其中 w(r) 是您选择用来衡量像素周围环境的窗口函数(例如高斯函数)。

如果你从逻辑上考虑,一个像素的梯度通常不能包含足够的信息来表示该像素的结构。您需要考虑像素的周围环境。因此,我们有一个影响半径 r,以及影响区域中的一个窗口函数。通过改变 r,您可以选择要查看的结构的比例。

一旦计算出每个像素的结构张量,就可以通过计算与每个结构张量最小量级的特征值对应的特征向量来组成结构张量场。

关于c++ - 如何计算二维数组的结构张量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16803587/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com