如何用R语言找到Waldo?

35

2
EBImage 包具有与 Mathematica 答案中使用的至少一些函数的对应函数。http://www.bioconductor.org/packages/release/bioc/html/EBImage.html - Richie Cotton
2
adimpro 也可能会很有用。http://cran.r-project.org/web/packages/adimpro/index.html - Richie Cotton
3
这里有两个问题。首先,你想使用哪些图像处理算法?之前的评论者提出了一些建议;我很容易地编写了Sobel和Hough变换等算法。另一个问题是你正在处理什么格式的图像?FITS和TIFF格式具有良好的“原始”像素数据,而其他格式可能更加杂乱无章。此外,你可能更喜欢使用NIH提供的免费软件ImageJ。 - Carl Witthoft
2
为什么选择R?最好使用Octave进行图像处理。它拥有更成熟的图像处理库,大多数与Matlab兼容。 - Agnius Vasiliauskas
第二个是0x69和Carl Witthoft。ImageJ基于Java,非常强大和灵活。R不是为图像处理而建立的。虽然可能做到这一点,就像用锤子吃龙虾一样可能。 - Joris Meys
@Joris:你从未尝试过打开一个4磅的东西,是吧? :-) - Carl Witthoft
1个回答

12

这里有一个起点,使用raster包。我不知道是否有时间去研究在Mathematica版本中使用的交叉相关方法,但是在图像的红色部分上进行局部标准差似乎可以在这种情况下找到Waldo...

library(raster)
waldo = stack("/Users/Benjamin/Desktop/DepartmentStore.jpg")

r = waldo[[1]] - waldo[[2]] - waldo[[3]]
r[is.na(r)] = 0
r_mask = Which(r > 0)
r_masked = r * r_mask

focalsd = focal(r_masked, w=3, fun=sd)
plot(focalsd)

4
如果有更好的答案出现,请不要犹豫取消接受此回答。我只是希望开始回答流程... - Benjamin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接