我有一个具有任意区域形状的图像(比如对象),假设背景像素被标记为零,而任何对象都有一个唯一的标签(对象 1 的像素被标记为 1,对象 2 像素被标记为 2,... )。现在对于每个对象,我需要找到其像素的最佳椭圆拟合。这需要找到对象的中心、长轴和短轴以及旋转角度。我怎样才能找到这些?
谢谢;
我有一个具有任意区域形状的图像(比如对象),假设背景像素被标记为零,而任何对象都有一个唯一的标签(对象 1 的像素被标记为 1,对象 2 像素被标记为 2,... )。现在对于每个对象,我需要找到其像素的最佳椭圆拟合。这需要找到对象的中心、长轴和短轴以及旋转角度。我怎样才能找到这些?
谢谢;
由于您似乎使用的是 Matlab,因此您可以简单地使用该regionprops
命令,因为您有图像处理工具箱。
它可以提取您需要的所有信息(以及图像区域的更多属性),并且如果基于 PCA 的方法适合您的需求,它将为您执行 PCA。
Doc 在这里,专门寻找'Centroid'
, 'Orientation'
,'MajorAxisLength'
和'MinorAxisLength'
参数。
主成分分析(PCA)是一种方法。请参阅此处的维基百科。
如果你的形状是凸的,质心很容易找到——只是 xy 位置上强度的加权平均值——PCA 会给你长轴和短轴,因此是方向。
一旦你有了中心和轴,你就有了一组覆盖你的形状的椭圆的基础。按比例扩展轴并测试每个像素的输入/输出,您可以找到刚好覆盖您的形状的椭圆。或者,如果您愿意,您可以将每个像素位置投影到主轴和次轴上,并在一次通过中找到粗略的限制,然后在“角落”案例中进行测试。
如果您发布示例图像可能会有所帮助。