如何将一张matlab图提取的圆轮廓图测定它的半径呀?求程序?

2025-01-05 08:39:38
推荐回答(2个)
回答(1):

给你提供个思路吧。

首先我假设你提取出的圆轮廓还算比较规整,圆度不至于偏差太大。
你只需要求出最大内切圆和最小外接圆即可。算法比较容易设计,简单来看可以分为三部分:
1)确定圆心。首先,你先填充原来的轮廓图,获得一个实心的圆。然后,统计这个圆的质心。
程序写起来很容易,就是x放心和y放心各自按照坐标加权平均而已。
2)求最大内切圆。在上一步获得的圆心基础上,计算出最大的半径值,使得以此半径构成的圆被最大地包含在原始的轮廓圆内部。这种包含关系直接使用俩图做差看剩余像素点是否在内切圆内即可。
3)最小外接圆。基本思路同2)。只不过这里要找一个最小的半径值,使得以此半径构成的圆最小地包含原始的轮廓圆。包含关系与2)类似,不再啰嗦。

2)、3)完成之后,问题就解决了。用matlab写成代码应该比较容易,你自己应该能做。

当然,以上的算法求出的圆心可能需要微调一下,即你在进行2)和3)时,需要在算出的圆心附近做一下简单的搜索,以获得一个最优的未知,这个是小trick,注意下即可。

回答(2):

本视频展示如何用matlab绘制散圆状态图,可用于相关科研数据绘图!