首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >彩色图像水平圆形边缘的检测

问彩色图像水平圆形边缘的检测
EN

Stack Overflow用户
提问于 2013-06-23 03:15:48
回答 4查看 937关注 0票数 1

我正在尝试检测彩色图像中包含椭圆形顶部部分的区域。

下面是我画的一些例子:

http://i.imgur.com/fh6udfL.jpg

http://i.imgur.com/3qLBrVn.jpg

您将如何实现这一点?我在图像处理方面缺乏经验,但我愿意阅读和学习。我主要在C++中使用OpenCV,但我也可以使用其他库。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-23 05:01:46

一般来说,你问的问题是一个大问题。在现实世界的图像中,你需要找到每个椭圆形状,区分哪个有顶部(直到你容忍并考虑向上的角度?)。然后你需要很好地分割这些形状,这样你就可以找到顶部有椭圆形物体的区域。

但是,如果您需要查找更简单的图像(如示例中的图像),但仍然是一种更通用的方法,则可以首先使用任何边缘检测(例如Canny)来获取边缘。然后,对曲线和椭圆使用Hough变换。但我不认为有这样的函数或库。所以你可能需要实现你自己的Hough变换。为此,你必须确定你所说的椭圆形顶部到底是什么意思。对于你的两个图像,如果你成功地找到了椭圆形顶部,只需获得它下面的区域。但是为了得到更通用的,你可能想要用更复杂的方法来分割它下面的形状。

用于霍夫变换;http://en.wikipedia.org/wiki/Hough_transform#Circle_Detection_Process和与椭圆http://en.wikipedia.org/wiki/Randomized_Hough_transform一起使用

票数 1
EN

Stack Overflow用户

发布于 2013-06-23 06:20:07

实际上在opencv上有一个检测圆的功能。

使用具有低parameter2 -cause的hough transform,您应该只在给定其顶部的情况下检测圆。

另一种方式应该是这样的;

1-低通滤波器(高斯模糊,在opencv文档中搜索)

2色滤镜-optional (如果您知道对象的颜色,请使用它,否则尝试从像素获取颜色(image.width/2,0)

3- canny边缘检测(再次参考文档)

4-查找轮廓(同样,请参阅文档)

5-如果你有一个轮廓,最好有很大的区域,并且包括像素(image.width/2,0),-you将在这里使用pointPolygonTest -那么你在底部有一个斑点。

6-检测这个斑点是否是“椭圆形”是一个大问题;但是你可以用“椭圆形”的属性做一些过滤;

  • 椭圆曲线有1个且只有1个峰值。应该只有1个轮廓像素具有最大高度。
  • 椭圆曲线的任何3个点都不能表示直线。这并不难实现,但对于算法来说却很复杂。
票数 0
EN

Stack Overflow用户

发布于 2013-06-23 13:47:35

我建议一种比圆的Hough变换更简单的方法。从上面的图像中,我看到椭圆形具有均匀的颜色,而图像的其余部分则不是。

  1. 选择合适的颜色空间(可能是HSV)
  2. 将灰度作为色调或饱和度-这些将描述图像中的颜色(而不是梯度的强度)(2)梯度=0的
  3. 像素属于椭圆
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17254407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档