【发布时间】:2015-01-03 07:37:10
【问题描述】:
我正在使用 R 进行一些非常简单的图像分析。具体来说,我正在尝试确定一张图片是否是另一张图片的裁剪版本。
在 R 中必须有一种“简单”的方法来做到这一点 - 但我没有找到它。我怀疑我对这个问题的思考过度了 - 所以寻找我所缺少的指导。
具体来说,考虑以下几点:
install.packages("jpeg")
library(jpeg)
image.main <- readJPEG("path to a jpeg image")
image.main.sub <- readJPEG("path to another jpeg image, cropped version of the first")
if (someMagicFunctionThatFindsSubImage(image.main,image.main.sub)) {
# TRUE - image.main.sub is a subset of image.main
} else {
# FALSE - image.main.sub is NOT a subset of image.main
}
someMagicFunctionThatFindsSubImage <- function (bigImage,smallImage) {
# the matrix of values that represent smallImage is also present
# in the matrix of values that represent bigImage
# bigImage and smallImage can be megabytes in size
# bigImage and smallImage can be limited to RGB Jpeg data (array of X,Y and 3 layers)
}
我试过了:
- grep、grepl、grepRaw : 错误 - 模式的长度 > 1
- rimage 包:错误,包“rimage”不可用
- package raster:不确定如何使用它来查找图像子集(我是不是想多了?)
- package ripa:同样,不确定如何使用它(再次,我是不是想多了?)
我一直在this github 收集结果,并将保持更新。
谢谢你
分钟
【问题讨论】:
-
请编辑您的问题以解决 2 个问题:“图像子集”的含义是什么?以及从哪个包中读取JPEG?
-
为什么您认为使用 any 软件是一项“简单”的任务?如果您确定永远不会再压缩、位深度等,那么您可以在卷积操作中使用小图像作为内核。至少可以说这是处理器密集型的。好的匹配算法通常会花钱,这是有道理的。
-
@BondedDust :添加了 install.packages("jpeg") 和 library(jpeg)。
-
@CarlWitthoft :当然 - 图像分析很困难。但在我跳到复杂之前,我试图确保我已经用尽了简单。 “编程是避免复杂解决方案的艺术”
-
当您使用它时,请不要将“复杂”用于“复杂”。复数在数学中是一个非常具体的概念,因此在软件中也是如此。
标签: r image-processing