【发布时间】:2015-12-12 09:21:42
【问题描述】:
我有一个如下图所示的二值图像。
如图所示,有一条看起来像椭圆弧的边缘,如下图所示,我手动将其标记为红色。这些红色像素应该是被代码找到的。
我的目标是为上图中红色的像素拟合一个椭圆。这个拟合的椭圆如下所示。
有人可以告诉我如何使用 MATLAB 获取第二张图像中标记为红色的像素吗?然后我将它们用于椭圆拟合。
【问题讨论】:
标签: matlab image-processing edge-detection
我有一个如下图所示的二值图像。
如图所示,有一条看起来像椭圆弧的边缘,如下图所示,我手动将其标记为红色。这些红色像素应该是被代码找到的。
我的目标是为上图中红色的像素拟合一个椭圆。这个拟合的椭圆如下所示。
有人可以告诉我如何使用 MATLAB 获取第二张图像中标记为红色的像素吗?然后我将它们用于椭圆拟合。
【问题讨论】:
标签: matlab image-processing edge-detection
您所描述的问题非常重要。 This article 描述了一些现有的方法。这很好,因为它是一项可以将您指向其他文章的调查。
正如您可能已经猜到的那样,没有椭圆的两端可以使用会使事情变得无限复杂。如果不是这种情况,您可以使用霍夫变换。 mathworks 网站上已有 a script 可用,请执行此操作。
话虽如此,我推荐谷歌搜索“椭圆检测”。它可能对 MATLAB 实现没有直接帮助,但至少可以让您了解您要解决的问题的严重程度。
【讨论】:
params.minMajorAxis 和params.maxMajorAxis,它能够检测到椭圆。诀窍是将我的图像的翻转版本添加到原始图像中,以便为代码提供更多信息。 c = imread('myellipseimage.jpg');,c2 = [c;flipud(c)];。这样,它保持椭圆关于水平轴的对称性。很棒的帮助。非常感谢。