Sobel Edge检测:
原始图片:
我使用sobel边缘检测技术来识别给定图像中每个对象的边界。如何使用这些边界提取原始图像中的对象。我们可以忽略像素数较少的对象。
答案 0 :(得分:1)
您所追求的是图像分割。由于家具元素之间的对比度低,以及纹理和阴影,您的情况看起来特别困难。
你也会意识到你需要定义你所谓的“对象”,你会发现在这个场景中隔离家具几乎是不可能的。
另一个坏消息:Sobel和Canny都不会很好地解决这个问题,因为真正的边缘会在某些地方不连续,会有很多错误的反应。
在我看来,目前的技术水平无法解决您的问题。
答案 1 :(得分:0)
您希望将cv2.findContours()
与hierarchy enabled一起使用。试试retr_ccomp。
这将尝试找到可以填充的区域。或者更准确地说,是封闭轮廓中的孔。由于sobel滤波器返回软边缘,我们希望检测软边缘之间的闭合轮廓,这些边缘本身就是边缘。 孔是对象。
您将同时获得contours
,点列表和hierarchy
元组列表。如果层次[i] [3]为正,则轮廓[i]具有父级,因此是一个洞,因为ccomp只允许2个级别。
我应该注意到我们已经处理了50年的图像分割问题,没有人有一个很好的解决方案。你会发现这种方法对任意场景来说都是不可靠的。