我有一个大图像矩阵 125x200x3,该图像有许多大面积的黑色,因此有很多行全为 0。我想完全去除所有这些黑色区域。我知道我应该使用 all(m==0,3) 但似乎我不太明白如何将它与 3d 矩阵一起使用。
m(all(m==0,3),:,:)=[]
超出矩阵... 如有任何帮助,我们将不胜感激!
最佳答案
如果您想删除包含全黑色的行,请执行以下操作:
m(all(all(m == 0,3),2),:,:) = [];
内部调用ALL (你正在做的事情)会给你一个 125×200 的逻辑矩阵,每个黑色像素都有一个。外部调用ALL跨维度 2(列)进行操作,为您提供一个逻辑向量,其中包含全黑色的行。然后您可以将其用作索引来删除行。
关于matlab - 在matlab中删除3d矩阵中所有全0行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8404462/