【发布时间】:2019-11-04 05:06:49
【问题描述】:
我有一组图像(不同焦距),在这些图像上我找到了二进制掩码。其中一些蒙版是重叠的,现在我想将所有这些蒙版添加在一起以生成一个大的图像蒙版。有没有办法将这些蒙版添加在一起并只考虑一次重叠区域。在考虑重叠区域时,它应该只考虑具有最大边缘的区域(来自边缘检测)。
所以现在掩码拥有所有图像的所有掩码。现在我想把这些面具加在一起。任何帮助表示赞赏。
这些是原始图像及其蒙版。 Link to images
因此,如果橙色在重叠区域中有更多的边缘检测点,则应考虑使用它,而绿色应仅具有不常见的点。橙色和绿色是这里的两个面具。
for file in glob.glob("images/*.jpg")
img = cv2.imread(file)
ret, mask = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY)
【问题讨论】:
-
我不明白关于“最大边”的评论。请澄清和/或提供您的面具图片,以便我们更好地理解。
-
@fmw42 最大边缘是指通过边缘检测获得的最大边缘点数。我会添加口罩的参考照片。
-
掩码是二进制的。如果你只想要一个面具,那么当你组合它们时,你只需将它们加在一起。因此,重叠将不知道要使用哪个图像,因为结果仍然是二进制的。您必须使用掩码将生成的掩码图像与某些优先级排序结合起来,方法是使用掩码区域标记掩码图像,或者更好地按区域对掩码进行排序,然后以相反的优先级顺序覆盖它们,以便最后处理最大的..我目前没有代码。
-
@fmw42 感谢分享。但是如何添加蒙版以获得一个蒙版?
-
只需添加它们并在 OpenCV 中进行剪辑 cv.add(mask1, mask2, ... maskN).clip(0,255)。但这不会使用一个掩码使用最大掩码的区域,因为所有关于掩码大小的知识都已丢失。
标签: python numpy opencv image-processing computer-vision