R中的像素化图像对象

时间:2014-08-04 14:45:34

标签: r image processing pixel

你如何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")

1 个答案:

答案 0 :(得分:2)

不确定两个图像的比较是否是整个应用程序,或者只是偶然的一部分,您需要做的是为了继续使用其他内容。如果是后者,ImageMagick非常有能力 - 见here

假设您有两个不同大小的图像(a.jpgb.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