我需要一个快速的方式来执行图像(矩阵)区域的阈值。 输入是矩阵(图像),阈值和半径,我需要检查给定半径内的所有值是否都小于阈值,如果需要,我需要保存此值(像素)的坐标。 我不想让它与双循环,因为我需要多次执行此任务与几个半径。 我不关心最小值或最大值,只是像素周围的所有值都会低于某个阈值。 任何想法将非常感激!阈值在矩阵matlab
回答
我不知道任何快速算法的圆形邻域。但是,如果您有矩形邻域,您可以在此处快速执行检查以了解更多详细信息: http://leetcode.com/2011/01/sliding-window-maximum.html
另外,当您有多个半径值时,可以提高速度。简单地从最小的值开始计算结果。对于将来的半径值,如果一个点没有通过前面的一个步骤,不要处理它,那么存在一个半径较小(因此在当前半径内)的点,该点大于阈值。
嗨,我并不清楚阈值,它可以随半径改变,所以,我不能对那些没有从上一级“通过”的像素进行测试。我想创建一个图像大小的蒙版,只有在当前窗口(我可以在方形窗口中创建一个圆形,如下所示:http://www.mathworks.com/matlabcentral/answers/24609 ,并且只是检查image。* mask的总和是否小于threshold * mask。我只是不知道如何避免在这种情况下的循环 – matlabit 2013-02-21 21:09:42
因此,你只需要定义一个循环过滤器,然后使用conv2或filter2运行计算总和(Matlab内部使用的FFT,所以它比嵌套循环实现方式更快) – iampat 2013-02-22 00:35:31
嗨,谢谢,这就是我要做的,编辑你的答案(与评论),我会接受它。 – matlabit 2013-02-24 08:04:58
- 1. 在MATLAB矩阵
- 2. 矩阵中的不同阈值
- 3. cellarray在矩阵matlab
- 4. 矩阵矩阵在Matlab中的数组?
- 5. Matlab - 矩阵阵列
- 6. Matlab - 在3d矩阵中查找2d矩阵值
- 7. 在MATLAB中绘制三维矩阵*值*
- 8. 矩阵在Matlab中的数值积分
- 9. Matlab大矩阵
- 10. Matlab选择基于矩阵值的值
- 11. 将阈值应用于单元阵列内的矩阵
- 12. 在matlab中递增矩阵
- 13. 在MATLAB中转换矩阵
- 14. Zeropad在matlab中的矩阵
- 15. 如何在Matlab矩阵
- 16. 在matlab中更改矩阵
- 17. 在matlab中拼贴矩阵
- 18. 在Matlab中绘制矩阵
- 19. 串联矩阵出在Matlab
- 20. 在Matlab中访问矩阵
- 21. 寻找矩阵在MATLAB
- 22. MATLAB - 用子矩阵创建矩阵
- 23. Matlab:重塑矩阵来分隔矩阵
- 24. 循环阵列矩阵matlab
- 25. MATLAB中的阈值处理
- 26. Matlab图像阈值处理
- 27. Matlab中的阈值分解
- 28. Matlab绘制阈值线
- 29. 乘法矩阵Matlab
- 30. Matlab 3D矩阵图
您可以使用圆形结构元素执行膨胀,然后在生成的图像中进行平凡的阈值处理。由于该问题被标记为“matlab”,我想你对扩大速度并不感兴趣,只是期望'matlab'能给出足够快的速度。如果您对此感兴趣,那么关于可分解性和提高形态操作效率的相关方法的工作量很大。 – mmgp 2013-02-22 00:09:39