如何旋转并防止导入R中的黑白图像出现不必要的着色
背景:我试着按照上面的步骤来做 我已经下载了图像,并使其可访问。它作为如何旋转并防止导入R中的黑白图像出现不必要的着色,r,image,image-processing,png,ppm,R,Image,Image Processing,Png,Ppm,背景:我试着按照上面的步骤来做 我已经下载了图像,并使其可访问。它作为baboon.png保存在R目录中: 现在我从R工作室 library('png') # used the png package image = readPNG('baboon.png') # to read the image 从那里可以遵循文章其余部分的步骤。比如说, baboon.svd = svd(image) baboon.1 = sweep(baboon.svd$u[,1,drop=FALSE],2
baboon.png
保存在R目录中:
现在我从R工作室
library('png') # used the png package
image = readPNG('baboon.png') # to read the image
从那里可以遵循文章其余部分的步骤。比如说,
baboon.svd = svd(image)
baboon.1 = sweep(baboon.svd$u[,1,drop=FALSE],2,baboon.svd$d[1],"*") %*%
t(baboon.svd$v[,1,drop=FALSE])
baboon.20 = sweep(baboon.svd$u[,1:20,drop=FALSE],2,baboon.svd$d[1:20],"*") %*%
t(baboon.svd$v[,1:20,drop=FALSE])
baboon.250 = sweep(baboon.svd$u[,1:250,drop=FALSE],2,baboon.svd$d[1:250],"*") %*%
t(baboon.svd$v[,1:250,drop=FALSE])
image(baboon.1)
image(baboon.20)
image(baboon.250)
但是,
我相信我可能需要将png图像转换为ppm文件才能丢弃颜色(?),但总的来说,我想就上面提到的两个问题寻求帮助:旋转和不需要的颜色。试试看
install.packages("raster")
install.packages("rgdal")
library(raster)
r1 <- brick("baboon.png")#please use any jpg image
plotRGB(r1)
png("baboonNew.png",width=nrow(r1),height=ncol(r1))
plotRGB(t(flip(r1, 1)))
dev.off()
install.packages(“光栅”)
安装程序包(“rgdal”)
图书馆(光栅)
r1OK。这就是我一直在寻找的答案:
首先,我们需要下载包EBImage
,该包在R版本3.3.1或更高版本中无法立即提供。我们可以通过转到,在那里可以使用该软件包复制并粘贴到R中进行安装:
source("https://bioconductor.org/biocLite.R")
biocLite("EBImage")
其余内容如下:
library(png)
library(EBImage)
img = readImage("baboon.png")
display(img, method="raster")
dim(img)
is.matrix(img)
baboon.svd = svd(img)
baboon.1 = sweep(baboon.svd$u[,1,drop=FALSE],2,baboon.svd$d[1],"*") %*%
t(baboon.svd$v[,1,drop=FALSE])
display(baboon.1, method="raster") #89 KB saved as png 646 x 466
baboon.20 = sweep(baboon.svd$u[,1:20,drop=FALSE],2,baboon.svd$d[1:20],"*") %*%
t(baboon.svd$v[,1:20,drop=FALSE])
display(baboon.20, method="raster") #179 KB saved as png 646 x 466
baboon.250 = sweep(baboon.svd$u[,1:250,drop=FALSE],2,baboon.svd$d[1:250],"*") %*%
t(baboon.svd$v[,1:250,drop=FALSE])
display(baboon.250, method ="raster")
r1+1我感谢您的帮助。但最终您的代码似乎是为了保存png图像而设计的。然而,我需要的是一个矩阵来输入svd
。
library(png)
library(EBImage)
img = readImage("baboon.png")
display(img, method="raster")
dim(img)
is.matrix(img)
baboon.svd = svd(img)
baboon.1 = sweep(baboon.svd$u[,1,drop=FALSE],2,baboon.svd$d[1],"*") %*%
t(baboon.svd$v[,1,drop=FALSE])
display(baboon.1, method="raster") #89 KB saved as png 646 x 466
baboon.20 = sweep(baboon.svd$u[,1:20,drop=FALSE],2,baboon.svd$d[1:20],"*") %*%
t(baboon.svd$v[,1:20,drop=FALSE])
display(baboon.20, method="raster") #179 KB saved as png 646 x 466
baboon.250 = sweep(baboon.svd$u[,1:250,drop=FALSE],2,baboon.svd$d[1:250],"*") %*%
t(baboon.svd$v[,1:250,drop=FALSE])
display(baboon.250, method ="raster")