我想拟合281 * 398 * 104矩阵的MR二进制数据,这不是一个完美的球体,并找出球体的中心和半径以及误差。我知道LMS或SVD是适合球体的不错选择。
我从matlab file exchange尝试过sphereFit但是出错了,
>> sphereFit(data)
Warning: Matrix is singular to working precision.
> In sphereFit at 33
ans =
NaN NaN NaN
您能让我知道问题出在哪里或其他任何解决方案吗?
答案 0 :(得分:0)
如果要使用球体拟合算法,首先应提取您假设为球体的对象的边界点。结果应该由包含点坐标的N×3数组表示。然后你可以应用sphereFit函数。
为了获得二元对象的边界点,有几种方法。一种方法是使用小结构元素应用形态侵蚀(需要来自图像处理工具箱的“imerode”函数),然后计算两个图像之间的集合差异,最后使用“查找”函数将二进制图像转换为坐标阵列。
这个想法如下:
dataIn = imerode(data, ones([3 3 3]));
bnd = data & ~data2;
inds = find(bnd);
[y, x, z] = ind2sub(size(data), inds); % be careful about x y order
points = [x y z];
sphere = sphereFitting(points);
顺便说一句,你提供的链接是指圈子拟合,我想你想指向一个球体拟合提交?
的问候,