【问题标题】:Find "external" elements bigger than a threshold value in a 3D matrix在 3D 矩阵中查找大于阈值的“外部”元素
【发布时间】:2013-07-26 19:17:12
【问题描述】:

我想知道是否有人可以帮我想出我现在正在处理的 3D 图像的代码。

我有一个简单的 3D 矩阵:

A(:,:,1) =

 0 7 4
 0 32 9
 4 3 1

A(:,:,2) =

 6 0 4
 3 4 6
 2 3 11

A(:,:,3) =

12 2 4
10 20 6
14 3 2

我想找到那些大于阈值(例如大于 7)的值。但是我只想要那些外部元素,即不是“中心”元素(矩阵第一层的 32 不应标记为最大值)

(我正在使用更大的矩阵,但我想一旦我能够从上面对小的 3D 矩阵执行此操作,对于更大的矩阵执行此操作将不难)。

非常感谢

【问题讨论】:

    标签: matlab image-processing matrix


    【解决方案1】:

    试试这个:

    A = randn(4,4,4); % data. Arbitrary size
    th = 1; % threshold
    
    ind = find(A>th);
    [x y z] = ind2sub(size(A), ind);
    ext = find((x==1)|(x==size(A,1))|(y==1)|(y==size(A,2))|(z==1)|(z==size(A,3)));
    
    ind_solution = ind(ext); % linear index of desired values
    solution = A(ind_solution) % desired values
    

    【讨论】:

    • 我一直在编辑。你现在可以试试吗?我将“外部”解释为子索引之一是 1 或最大值,这是您想要的吗?
    • 它运行良好,除了矩阵的最后一层(它需要一些内部元素)。是的,“外部”是指第一和最后一列和行的元素
    • 对我来说,“外部”包括第一层和最后一层中的所有元素。我将 3D 矩阵视为一个立方体,“外部”是指您可以从外部看到的所有六个面。如果这不是你想要的,你能解释得更清楚吗?
    【解决方案2】:

    我猜你可以从这些矩阵中提取向量...所以这是获取外部向量并循环遍历它们的元素的问题。

    我认为这个link 将帮助您提取向量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      相关资源
      最近更新 更多