【发布时间】:2016-08-03 18:32:27
【问题描述】:
假设你得到了这张图片
并被指示以编程方式仅将其内部着色为适当的颜色,但程序不仅必须处理此形状和其他图元,还必须处理任何轮廓形状,无论它可能多么复杂和是否着色.
这是我要解决的问题,但这是我卡住的地方,教计算机看黑线并在其中着色似乎应该很简单。但是搜索大多会出现特征脸风格识别算法,在我看来,这似乎是过度拟合,并且比至少这个问题的基本形式所需的复杂性要大得多。
我想将此定义为一个监督学习分类器问题,其目的是为我的模型提供一个完整的图像,它将输出更小的 numpy 数组,这些数组由分类为 object 或 background 的像素组成。但为了做到这一点,我需要给它训练数据,在我看来,我需要手动标记训练集中的每个像素,这显然违背了程序的目的。
现在你有了背景,这是我的问题,给定这张图片,有没有一种有效的方法来获得两个不同的数组,每个数组都包含不包含任何纯黑色的所有相邻像素(RGB(0,0,0 )) 像素?
这将使一个设置圆内部的所有像素,另一个设置圆外部的所有像素
【问题讨论】:
-
是的,教计算机在黑线内部着色似乎很简单,我不明白为什么你不能从角落开始,遍历外部的每个像素形状(并使用回溯来避免线条),这将为您提供外部数组,然后只需填充其他非黑色像素。我是否遗漏了一些使问题变得更复杂的东西?
-
这并没有考虑多个形状,或者,例如,形状中的形状,我确实考虑过这种可能性
-
你到底有什么数据?
it seems like it should be simple to teach a computer to see black lines这对人类来说很容易,是的,但对计算机来说却是出了名的难。但是,如果您尝试着色的形状像圆圈一样孤立,那并不难。如果在硬盘上,形状是一般图像,那就没那么简单了。 -
@KevinWells 的解决方案适用于多种形状,但您还没有解释形状中形状的预期结果是什么
-
您愿意使用 OpenCV 模块 (cv2) 吗?
标签: python algorithm numpy machine-learning computer-vision