我正在尝试检测彩色图像中包含椭圆形顶部部分的区域。
下面是我画的一些例子:
http://i.imgur.com/fh6udfL.jpg
http://i.imgur.com/3qLBrVn.jpg
您将如何实现这一点?我在图像处理方面缺乏经验,但我愿意阅读和学习。我主要在C++中使用OpenCV,但我也可以使用其他库。
发布于 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一起使用
发布于 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-检测这个斑点是否是“椭圆形”是一个大问题;但是你可以用“椭圆形”的属性做一些过滤;
发布于 2013-06-23 13:47:35
我建议一种比圆的Hough变换更简单的方法。从上面的图像中,我看到椭圆形具有均匀的颜色,而图像的其余部分则不是。
https://stackoverflow.com/questions/17254407
复制相似问题