如何计算包围不规则物体的圆的直径?

时间:2015-06-16 14:33:07

标签: matlab function

green line

我想要一个函数来计算并获得围绕对象的圆的直径。在MATLAB中是否有内置函数来执行此操作?否则,我该怎么办?

2 个答案:

答案 0 :(得分:4)

试试这个算法:

  1. 计算不规则对象中每个点的平均x和平均y。这是通过为每个点取x和y分量并将它们加到总x和总y中然后除以点数来完成的。此平均x和y平均y算法为您提供了对象的非加权中心。

  2. 使用该中心点再次计算不规则物体中每个点的距离。保持最大距离作为物体的半径。

  3. 使用中心点和半径计算周长。

  4. 我提交证据证明物体中距离最远的2个点之间的距离是一个简单的三角形。见下图。此外,用于计算最远的两个点的大O符号是x ^ 2。这个算法的大O是2倍。图像中圆的直径计算为20; -10,0和10,0之间的距离。直径为20的圆圈不包含点@ 0,-11。圆的任何移动都会自动移除用于计算圆直径的两个点中的至少一个,因为两个点都在切线上。

    enter image description here

答案 1 :(得分:1)

假设M是BW中的掩码,只需执行:

 [b_x,b_y] = find(bwperim(M)== 1)

检查此功能bwperim