gpt4 book ai didi

image-processing - 如何使用 Mathematica 查找 Waldo?

转载 作者:行者123 更新时间:2023-12-03 03:51:20 25 4
gpt4 key购买 nike

这个周末一直困扰着我:有什么好方法来解决这些问题 Where's Waldo? ['Wally' 在北美之外] 使用 Mathematica(图像处理和其他功能)解谜?

这是我到目前为止所拥有的,一个通过调暗来稍微降低视觉复杂性的功能一些非红色:

whereIsWaldo[url_] := Module[{waldo, waldo2, waldoMask},
waldo = Import[url];
waldo2 = Image[ImageData[
waldo] /. {{r_, g_, b_} /;
Not[r > .7 && g < .3 && b < .3] :> {0, 0,
0}, {r_, g_, b_} /; (r > .7 && g < .3 && b < .3) :> {1, 1,
1}}];
waldoMask = Closing[waldo2, 4];
ImageCompose[waldo, {waldoMask, .5}]
]

还有一个“有效”的 URL 示例:

whereIsWaldo["http://www.findwaldo.com/fankit/graphics/IntlManOfLiterature/Scenes/DepartmentStore.jpg"]

(Waldo 在收银台旁边):

Original image

Mathematica graphic

最佳答案

我找到了威利!

waldo had been found

我是如何做到的

首先,我过滤掉所有非红色的颜色

waldo = Import["http://www.findwaldo.com/fankit/graphics/IntlManOfLiterature/Scenes/DepartmentStore.jpg"];
red = Fold[ImageSubtract, #[[1]], Rest[#]] &@ColorSeparate[waldo];

接下来,我将计算该图像与简单的黑白图案的相关性,以找到衬衫中的红色和白色过渡。

corr = ImageCorrelate[red, 
Image@Join[ConstantArray[1, {2, 4}], ConstantArray[0, {2, 4}]],
NormalizedSquaredEuclideanDistance];

我使用二值化来挑选图像中具有足够高相关性的像素,并在它们周围绘制白色圆圈以使用扩张来强调它们

pos = Dilation[ColorNegate[Binarize[corr, .12]], DiskMatrix[30]];

我必须稍微调整一下关卡。如果级别太高,则会挑选出太多误报。

最后我将这个结果与原始图像结合起来得到上面的结果

found = ImageMultiply[waldo, ImageAdd[ColorConvert[pos, "GrayLevel"], .5]]

关于image-processing - 如何使用 Mathematica 查找 Waldo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8479058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com