【发布时间】:2014-02-13 20:09:27
【问题描述】:
在 Matlab 中,我有一个 3D 矩阵(超过 100 帧 512x512)。我的目标是通过整个超矩阵找到一些代表点。为此,我实现了传统的(而且效率不高)方法:我将大矩阵细分为更小的子矩阵,然后寻找具有最高值的像素。之后,我将子矩阵中该像素的相对坐标更改为参考大矩阵的全局坐标。
现在,我正在重新设计算法。我已经看到,为了逐块分析大型矩阵(这实际上是我使用旧算法所做的),BLOCKPROC 函数非常有效。我已经阅读了文档,但我不知道应该如何实现“有趣”功能来提取每个块中具有最高值的像素。提前谢谢你。
*我正在尝试获取参考全局矩阵的那些最大像素的坐标,我真的不在乎它们的值。
【问题讨论】:
-
我不太确定你想要实现什么。为什么不对每一帧都使用 max() 函数?然后使用 find() 和 ind2sub()。就像在这个线程中一样:mathworks.com/matlabcentral/newsreader/view_thread/170759
-
因为在每一帧中都有几个我正在寻找的点。解释太长了... 简要地说:我从显微镜中获得了图像(3D 堆栈),其中有许多纤维(胶原纤维)。我必须找到一些点(每帧中的几个像素),然后插入这些点并重建纤维。这些点称为成核点,找到它们的最佳方法是按照我在问题中解释的操作。
-
我认为我想做的事情很简单。将图像细分为较小的图像,并获取每个较小图像的最大像素的坐标(参考全局图像)。
-
如果您知道要查找的值,find() 函数将返回您要查找的所有点的索引。您甚至可以使用逻辑表达式。或者我可能误解了你所说的“最大值”是什么意思。 mathworks.com/help/matlab/ref/find.html
-
确实如此。但是,同一子矩阵中的多个像素可以具有相同的值。
标签: algorithm matlab image-processing block