你如何pixelate R中的图像对象?换句话说,如何将高质量图像对象转换为低位(例如8像素)图像对象?
我已经开始使用“EBimage”包进行图像处理,但找不到可以执行此操作的功能。有任何想法吗?我们可以用下面的例子进行讨论。
source("http://bioconductor.org/biocLite.R")
biocLite("EBImage",dependencies=T)
require("EBImage")
link1 <- "https://raw.githubusercontent.com/algons/coursera/master/junk_pic.png"
#Download images and create img objects
download.file(link1, "img1.jpg", mode="wb", quiet=TRUE)
img1 <- readImage("img1.jpg")
答案 0 :(得分:2)
不确定两个图像的比较是否是整个应用程序,或者只是偶然的一部分,您需要做的是为了继续使用其他内容。如果是后者,ImageMagick非常有能力 - 见here。
假设您有两个不同大小的图像(a.jpg
和b.jpg
),您可以将它们的副本强制为100x100像素(比方说),然后比较这样的像素之间的均方根差异:
convert a.jpg -resize 100x100! 1.jpg
convert b.jpg -resize 100x100! 2.jpg
compare 1.jpg 2.jpg -metric rmse null:
它会给出一个均方根差异作为其数字输出,0
意味着图像是相同的。
您可以从R中弹出并使用system()
命令
system("compare 1.jpg 2.jpg -metric rmse null:",intern=TRUE);
或者您可以将图像转换为4x4,并自行进行矢量比较:
convert a.jpg -resize 4x4! smallA.jpg
convert b.jpg -resize 4x4! smallB.jpg