我不认识Mathematica。。。太糟糕了。但在大多数情况下,我喜欢上述答案。
仅依靠条纹收集答案仍然存在一个重大缺陷(我个人没有一个手动调整的问题)。有一个示例(由Brett Champion列出,在此处)显示该示例有时会破坏衬衫样式。因此,它变成了一个更复杂的模式。
我会尝试使用形状ID和颜色以及空间关系的方法。就像人脸识别一样,您可以按一定比例查找几何图案。需要注意的是,通常会阻塞这些形状中的一个或多个形状。
在图像上获得白平衡,并从图像中获得红色平衡。我相信Waldo始终是相同的值/色相,但是图像可能来自扫描或不良副本。然后,始终引用Waldo实际使用的颜色数组:红色,白色,深棕色,蓝色,桃红色,{鞋子颜色}。
有衬衫的图案,还有定义Waldo的裤子,眼镜,头发,脸,鞋子和帽子。此外,相对于图像中的其他人,Waldo处于瘦弱的一面。
因此,在这张照片中,找到随机的人以获得人的高度。在图像的随机点测量一堆东西的平均高度(简单的轮廓会产生很多个人)。如果每个事物彼此之间的标准偏差都不在一定范围内,则暂时将其忽略。比较平均高度与图像高度。如果比率太大(例如1:2、1:4或类似的比率),请重试。运行10次(?),以确保所有样本都非常接近,不包括任何超出标准偏差的平均值。在Mathematica中可能吗?
这是您的Waldo尺寸。Walso很瘦,所以您正在寻找5:1或6:1(或其他)ht:wd的东西。但是,这还不够。如果Waldo被部分隐藏,则高度可能会改变。因此,您正在寻找约2:1的红白色块。但是必须有更多指标。
- 沃尔多有眼镜。在红白色上方搜索0.5:1的两个圆圈。
- 蓝色的裤子。在红白底端与脚之间的任何距离内,相同宽度的任何数量的蓝色。请注意,他的衬衫穿得短,所以脚不要太紧。
- 帽子。红白色,距离不超过他头顶的两倍。请注意,它下面必须有一头黑发,可能还有眼镜。
- 长袖。红白色与主红白色成一定角度。
- 黑头发。
- 鞋的颜色。我不知道颜色。
这些都可以适用。这些也是对图片中相似人物的否定检查-例如,#2否定穿着红白色围裙(太靠近鞋子),#5否定浅色头发。同样,形状只是这些测试中每一项的指标。。。在指定距离内单独使用颜色可以提供良好的效果。
这将缩小要处理的区域。
存储这些结果将产生一组应该包含Waldo 的区域。排除所有其他区域(例如,对于每个区域,选择一个比普通人大两倍的圆圈),然后运行@Heike布置的过程,除去所有红色,以此类推。
关于如何编写代码有什么想法?
编辑:
关于如何编写此代码的思考。。。排除沃尔多(Waldo)红色以外的所有区域,对红色区域进行骨架化,然后将它们修剪到一个点。对于Waldo头发棕色,Waldo裤子蓝色,Waldo鞋子颜色也是如此。对于Waldo肤色,排除后找到轮廓。
接下来,排除非红色区域,扩大(大量)所有红色区域,然后进行骨架化和修剪。这部分将给出可能的Waldo中心点的列表。这将是比较所有其他Waldo颜色部分的标记。
从这里开始,使用带骨架的红色区域(而不是膨胀的红色区域),计算每个区域中的线。如果有正确的数字(四个,对吗?),则肯定是可能的区域。如果不是的话,我想就把它排除在外了(作为沃尔多中心……那可能仍然是他的帽子)。
然后检查上方是否有面部形状,上方是否有头发点,下方是否有裤子点,下方是否有鞋子点等等。
尚无代码-仍在阅读文档。