OpenCV - 叶柄去除
OpenCV - Leaf Petiole Removal
我想知道如何解决我给定的问题:从叶子上去除叶柄,对叶子的影响很小 none。
根据研究,人们尝试使用像礼帽这样的形态学操作来增强和去除叶柄,但在某些情况下,这种方法效果不佳,还会从叶子中检测到额外的峰(如下例)。
我也会尝试基于 HSV 颜色的分割 space,但我会非常感谢 BGR 的想法 space。
从左到右(输入图像、找到的轮廓、应用了内核大小结构元素的形态学,这取决于每个叶种)
我在 C++ 中使用 OpenCV。
example problem petiole detection
如评论中所述,我很想亲自尝试一下。
这就是我得到的:
我用了distance transform,但是最后的解并没有显得那么完美。如果您愿意,我在 python 中有代码。
代码:
dist_transform = cv2.distanceTransform(thresh1,cv2.DIST_L2,5)
ret, stalk = cv2.threshold(dist_transform,0.095*dist_transform.max(),255,0)
stalk = np.uint8(stalk)
cv2.imshow('stalk_removed.jpg',stalk)
其中thresh1
是叶子的二值图像。
我想知道如何解决我给定的问题:从叶子上去除叶柄,对叶子的影响很小 none。
根据研究,人们尝试使用像礼帽这样的形态学操作来增强和去除叶柄,但在某些情况下,这种方法效果不佳,还会从叶子中检测到额外的峰(如下例)。
我也会尝试基于 HSV 颜色的分割 space,但我会非常感谢 BGR 的想法 space。
从左到右(输入图像、找到的轮廓、应用了内核大小结构元素的形态学,这取决于每个叶种)
我在 C++ 中使用 OpenCV。
example problem petiole detection
如评论中所述,我很想亲自尝试一下。 这就是我得到的:
我用了distance transform,但是最后的解并没有显得那么完美。如果您愿意,我在 python 中有代码。
代码:
dist_transform = cv2.distanceTransform(thresh1,cv2.DIST_L2,5)
ret, stalk = cv2.threshold(dist_transform,0.095*dist_transform.max(),255,0)
stalk = np.uint8(stalk)
cv2.imshow('stalk_removed.jpg',stalk)
其中thresh1
是叶子的二值图像。