Saa*_*nia 3 matlab image-processing stereo-3d point-clouds matlab-cvst
我是MATLAB的新手,刚刚开始研究Stereo Vision.在场景的3D立体重建之后,从我获得的点云,我想忽略所有具有值NaN或Inf的坐标.
为此,我遵循以下程序:
对于尺寸为40×40的图像,点云是40×40×3的矩阵(3由于3D; X,Y和Z坐标).
从3D点云(40 X 40 X 3)开始,我得到一个尺寸为1600 X 3的矩阵.3列中的每一列都对应于X,Y和Z坐标
在这一步,我试图删除整行,如果我找到任何Inf或NaN元素.
例如,在连接步骤之后,如果我有矩阵A.
A = [1,11,21; NaN,12,22; 3,13,Inf; NaN,14,NaN; 5,Inf,NaN; 6,16,26];
我想消除所有具有Inf或NaN元素的行.
所以预期的结果是:[1,11,21; 6,16,26];
由于我将使用尺寸为4000 X 3000的图像,我想要一种非常快速有效的方法.
我这样做是为了在我获得的点云中拟合一个平面(最合适).拟合平面的函数不采用Inf和NaN值.因此,即使找到一个NaN值,也必须消除所有相应的X,Y和Z坐标.
如果有更好的方法来做到这一点,除了我目前正在做的,请通知.
谢谢=)
对于1600 x 3
尺寸重塑A
,您可以使用此 -
A(~any(isinf(A) | isnan(A),2),:)
Run Code Online (Sandbox Code Playgroud)
如果要删除的行数很小,您可以直接删除它们以获得更好的性能 -
A(any(isinf(A) | isnan(A),2),:) = [];
Run Code Online (Sandbox Code Playgroud)