【发布时间】:2013-08-07 23:08:24
【问题描述】:
在 Matlab 中,我有一个矩阵,在我的代码的前一阶段,选择了一个特定元素。从矩阵的这一点开始,我想找到一个最大值,而不仅仅是给定半径的所有周围邻居之间的最大值,而是 在给定方向角度的最大值。让我用一个例子来解释一下:
这是矩阵 A:
A =
0 1 1 1 0 0 9 1 0
0 2 2 4 3 2 8 1 0
0 2 2 3 3 2 2 1 0
0 1 1 3 2 2 2 1 0
0 8 2 3 3 2 7 2 1
0 1 1 2 3 2 3 2 1
第一阶段选择的元素是A(2,4)中的4,下一个元素应该是最大值,例如315度的方向角,即是 A(5,7) 中的 7。
我所做的是,根据角度,将矩阵 A 细分为不同的象限,并创建一个仅包含该象限值的新矩阵(A 的子矩阵)。
因此,对于本例,子矩阵将是 A 的第四象限:
q_A =
4 3 2 8 1 0
3 3 2 2 1 0
3 2 2 2 1 0
3 3 2 7 2 1
2 3 2 3 2 1
现在,我的问题是,如何提取 7?
我唯一能做的(并且有效)是找到所有超过阈值的值,然后计算这些点的方向。然后,保存与给定方向(本例中为 315 度)具有相似方向的所有值,最后找到其中的最大值。它有效,但我想可能会有更快、更“清洁”的解决方案。
【问题讨论】:
-
您是否尝试过
imrotate使用最近邻插值和您的元素 (r,c) 作为中心来使您的角度始终为 0?然后就是max(Arotated(r,c:end))
标签: matlab image-processing matrix