opencv:提取区域的方法

时间:2011-12-02 12:11:38

标签: c++ image-processing opencv image-segmentation threshold

我正在寻找一个很好的解决方案,如何在视频流中对opencv中大面积的类似灰色阴影进行分割。

这是我的形象,例如:

enter image description here

要获得此图像,我已经进行了直方图均衡化。我想在中间检测到那个区域。这是一个很大的灰色区域,但它的灰色阴影仍然不同。

应用阈值不是解决方案,因为该区域可以是浅灰色或深灰色,以及任何类型的灰色。但该地区整个地区的灰色大致相同。 我在opencv中尝试过自适应阈值处理,但是我没有得到好结果:

enter image description here

我也尝试过canny。但结果也很糟糕。

所以我的问题是如何在opencv中正确分割出类似灰色的区域?

提前谢谢

3 个答案:

答案 0 :(得分:1)

分割出这样一个区域的一个好方法是建立一组可以应用于图像的Gabor过滤器,检查每个gabor文件管理器的响应,并在靠近周围区域的区域内进行集体响应每个Gabor过滤器,你都可以渴望得到所需的部分。

1- Builde Gabor不同方向和尺寸的过滤器 2-将它们应用于图像, 3-测量每个过滤器的响应。 4-附近的每个过滤器的响应应该合理地彼此靠近。 5-然后进行分割。

希望这有帮助。
您可以在Gabor过滤器Here

上找到更多信息

答案 1 :(得分:0)

好吧,最后你可能想要使用Chan& amp; Vese(和其他类似的)给出你的图像是多么嘈杂。但目前我们可以坚持使用OpenCV中实现的基本形态运算符。

从形态关闭开始删除一些细微的细节,我在这里使用了方形9x9。然后执行形态渐变以可能突出有趣的边缘,并按简单if value > mean + std/2, then 1, else 0进行分段。如果丢弃小组件并使用垂直结构元素进行另一次关闭(假设您想垂直连接段附近),这就是我们的结果:

enter image description here

答案 2 :(得分:0)

我正在使用OpenCV检测机器人 - 曲棍球比赛中的蓝色,黄色或绿色物体。在这里你有一个类似的问题,冰球的“测量”颜色取决于光和其他因素。通过将我的相机图像转换为HSV色彩空间,您可以非常好地匹配这些条件(H = Hue,S =饱和度)。所以你可以做的是将图像转换为HSV,然后为你的灰色区域定义一个阈值。(将所有像素设置在例如30,100,100和40,255,255之间,将其余设置为0。