Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何旋转并防止导入R中的黑白图像出现不必要的着色_R_Image_Image Processing_Png_Ppm - Fatal编程技术网

如何旋转并防止导入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)
但是,

  • 生成的图像逆时针旋转90度
  • 它们包括原始png中没有的颜色信息
  • 以下是一个例子:


    我相信我可能需要将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")