0
我想拟合不是完美球体的281 * 398 * 104矩阵的MR二进制数据,并找出球体的中心和半径以及误差。我知道LMS或SVD是适合球体的好选择。使用SVD/LMS拟合球体
我试图从sphereFit但matlab file exchange得到一个错误,
>> sphereFit(data)
Warning: Matrix is singular to working precision.
> In sphereFit at 33
ans =
NaN NaN NaN
你让我知道问题出在哪里,或者任何其他的解决办法?
非常感谢您的回答。抱歉错误的超链接,我编辑了我用于分析的sphereFit函数的链接。 我需要根据我的'数据'(389 * 281 * 52; Row,Col,Slices)修改您的代码。我无法理解代码的一些行。所以你会让我用ones()的目的,虽然我读了imerode函数但是不能正确理解它。 x,y,z:它们是行,列,输入数据矩阵的切片。但是,我感谢您的关注@dlegland – Joe
设置我的数据:dataIn = imerode(data,ones([3 3 3])); bnd = data&〜dataIn; inds = find(bnd); [y,x,z] = ind2sub(size(data),inds);点= [x y z]; sphere = sphereFit(points) – Joe
首先,我假设你的数据是一个包含布尔值的3D数组,是吗? imerode函数的目的是去除位于“靠近”背景的输入二值图像的体素。它可以被看作是消除边界。通过与原始数据相结合,您可以获得具有白色体素边界的3D二值图像。 – dlegland