2015-08-27 61 views
-2

例如,如何根据水平边缘来分割这个书架的两排书籍?我用索贝尔边缘检测器来检测边缘,但我不知道如何或用什么条件来分割图像。如何分割基于最长水平边缘的图像?

+1

“_split this shelf of this shelf_”...图像丢失。你能发布迄今为止的代码吗? –

+1

和[mcve](http://stackoverflow.com/help/mcve)。 – kkuilla

+0

@il_raffa - 图片网址在帖子中,但由于用户的低代表而没有显示。我已经加入了。 – rayryeng

回答

1

我可以推荐你两种不同的方法来解决这个问题。

1)机器学习方法。这需要一些标记数据,指示边缘位置的y坐标,然后HOG特征加上随机森林分类器将完成这项工作。

2)图像处理方法。首先,让我们来看看的what i have done输出:

enter image description here

蓝色指示的是所述的分离边缘的期望的y位置的分数。

这种方法总是依赖于您的数据的一些假设,在这里我们假设目标水平边缘分隔书籍,其中包含很多垂直线。也就是说,我们正在寻找y坐标,其中定位了未被垂直线切割的长水平线。

一旦定义我们的目标,其余的开始很容易。

首先我们需要一个直线检测器,hough transform会做。

enter image description here

其次,我们投票支持的是使用两个成绩最好的分离器,每个Y坐标:

1)第一得分描述多少长水平线(先前发现的)位于邻里。我们称之为s_h

2)第2分数描述多​​少长垂直线位于附近。我们称之为s_v

enter image description here

最后,我们只需要结合S_VS_H做出最后的比分。例如,

S = S_H /(S_V + 1)

利用这一点,我们得到张贴在年初第一个得分王的地图。一些进一步的后处理需要完成,但不应该很难。

这里只是解决它的一种可能性,在这里您可以找到my code presented in a notebook

+1

如果您提供了代码以便其他人可以重现您生成的内容,那将是一件好事。记住,当你写一个答案时,你不仅要帮助OP解决他们的问题,而且你可能会帮助未来的访问者解决这个问题,他们可能会遇到同样的问题。 – rayryeng

+2

我已经添加了一个ipython笔记本的链接,以显示它是如何工作的。但是我所做的事情往往会过分依赖这张图片,因此需要切换某些细节以使其更加稳定。但是,如果您可以拥有更多像这样的图像(比如100?),我强烈建议您调整机器学习方法。 –

+0

如果你在MATLAB中这样做的话会更好,因为这是问题的标记,但是一个IP笔记本比没有更好!......绝对比OP更值得 – rayryeng