R:检测两个图形是否相同

5
我目前正在开发一个用于在R中生成视觉能力评估项目的软件包。这些项目通常以构图开始,然后对构图的元素进行某种转换,以创建新的构图。我需要知道的是,是否存在可以导致相同构图的替代转换。由于潜在组合数量众多,通过数学方法逐个检查每个构图的可能选项,并查看构图是否对某些转换具有不变性(例如,圆形不能旋转),或者不同的转换是否会产生相同的结果(例如,等边三角形旋转180度与翻转相同)似乎太过繁琐。
因此,我想知道是否有任何可用的方法在R中检查两个图形是否相同?
假设我们有两组命令都可以生成正方形:
plot(c(0,1), c(0,1), type='n')
  lines(c(.15,.85,.85,.15,.15),c(.15,.15,.85,.85,.15))

plot(c(0,1), c(0,1), type='n')
  rect(.15,.15,.85,.85)

有没有可用的工具可以对比两个图形渲染的每个像素?

这里的预期结果是什么?你的图应该是完全相同的吗? - agstudy
我认为他们应该是。 - Francis Smart
1个回答

4
您可以将图片保存为png格式,然后加载它们并比较它们的栅格图像。比较栅格图像就是比较像素矩阵。例如,对于您的示例进行此操作:
png(filename="pic1.png")
plot(c(0,1), c(0,1), type='n')
lines(c(.15,.85,.85,.15,.15),c(.15,.15,.85,.85,.15))
dev.off()

png(filename="pic2.png")
plot(c(0,1), c(0,1), type='n')
rect(.15,.15,.85,.85)
dev.off()

然后比较栅格图像,我们发现它们是相同的:

library(png)
pic1 = as.raster(readPNG("pic1.png"))
pic2 = as.raster(readPNG("pic2.png"))

identical(pic1,pic2)
[1] TRUE

哇,真不敢相信栅格图像会完全一致,甚至可以通过严格的 identical() 测试。 - Vlo
@Vlo 你是什么意思? - agstudy
我觉得png()/raster的行为很有趣。 - Vlo
太棒了!我觉得这完全是不可能的事情! - Francis Smart

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