我当前的问题:我有一个输入3D二值图像(一个只有0和1的3D矩阵),它由半径为r的球体的随机数组成。
我们不知道图像中有多少个球体。
所有球体都具有相同的半径r,但我们不知道半径r。
球体遍布图像中的整个位置并可以彼此重叠。
示例图像如下。

我的要求:


半径r是多少?

目前,我只是将图像变平以摆脱z轴并执行边缘检测,而我正在尝试使用以下方法进行霍夫变换:http://rsbweb.nih.gov/ij/plugins/hough-circles.html br />
但是,通过霍夫变换,我看到必须指定变量最小半径,最大半径和圆数。我尝试了以下尝试:





给出正确的参数,霍夫变换可以很好地检测到圆。但是在实际应用中,我不知道有多少个球体,并且使程序尝试猜测最小和最大半径似乎是不可行的。还有其他方法可以做到这一点吗?

交叉链接:https://math.stackexchange.com/questions/118815/finding-radius-r-of-the-overlappable-spheres-in- 3d图像

评论

编辑您的问题并添加输入图像格式的说明。

输入图像的格式是二进制3D图像。

您的问题似乎不受限制,除非您打算说球体不能相互重叠。

不,球体可以相互重叠。在最简单的情况下,根本没有球体重叠,但这并不总是正确的。

#1 楼

与Hough变换相比,一种更简单的解决方案和更高的计算效率是使用距离变换:


查找球体的表面(即,像素值为1且至少具有1个相邻的0像素);
计算相对于球体表面的距离变换,但仅将计算限制在球体内的像素。输出将是一个距离图;
半径将恰好是您的距离图中的最大值。

与霍夫变换相比,该解决方案的另一个优势是它提供了更多半径的精确值。

评论


$ \ begingroup $
但是,如果两个球体重叠,则最大值不是从一个球体的另一侧到另一球体的另一侧的更长距离吗?
$ \ endgroup $
– Endolith
2012年3月30日13:56

$ \ begingroup $
@endolith否,因为在这种情况下,给定像素(体素)的距离变换值对应于到最近球面的距离。
$ \ endgroup $
– Alceu Costa
2012年4月4日下午2:31

#2 楼

通常,霍夫变换不需要猜测您要查找的圆的半径或有多少个。也许您被您的消息来源误导了。转换在其最一般的形式上可能在计算上昂贵;

给定您的输入图像,我希望霍夫变换能够以合理的精度找到球体的半径;图像中有很多点代表半径相同的圆的圆周上的点。

鉴于该半径,您似乎已经破解了其余问题,所以我不会写任何东西更多。

我看到Wikipedia对Hough变换的解释也表明,只要可以对这些对象进行参数化,就可以将其用于在3D图像中查找3D对象。