2016-06-16 9 views
2

RGB透明度情報を持たない.png画像の行列に対応するリストがあります。行列の次元は128 128 3です。だから、私は128 x 128行列を各ピクセルの赤の色相をコーディングしています。緑をコード化するマトリックス; 128 x 128;ブルースの場合は128 x 128の行列です。画像に透明度はありませんが、この.pngを書くにはのマトリックスを1のように入れて、128 x 128 x 4のマトリックスになるようにリストにタグを付ける必要があると思います。リストに行列を追加するR

この行列をリストに追加するにはどうすればよいですか?

私はこれらの寸法(128 128 3)を持つcompressedという名前のリストを持っています。私はmatrix(rep(1, 128^2), nrow= 128)のようなものを含めるために複数の一重および二重括弧書きの方法を試しました。色と離れてやってなくて

require(png) 
writePNG(compressed, "compressed.picture") 

アイデアは、最終的にはとして保存することです。

+1

'list'または' array'を持っていますか?単に 'do'(yourlist、yourmatrix)'を使うか 'append'を使うか、' [ [ – akrun

+0

[ライブラリ対require - Yihui](http://yihui.name/ja/2014/07/library-vs-require/):) – Therkel

+1

実際には、アルファチャンネルはオプションですので、必要はありません'1'で満たされた4番目の行列をカラーチャネルに追加します。 'writePNG'に' 128 x 128 x 3'配列を与えるだけで問題ありません。 – aoles

答えて

3

ここには、配列または行列のリストがあるかどうかによって、その例があります。 ?writePNGを見ると、最終製品としてn x n x 4の配列が必要なようですので、リストから配列への変換を含めました。

多くの他のソリューションが提供されています。 here

n <- 4 

# generate matrices 
r <- matrix(runif(n^2), n, n) 
g <- matrix(runif(n^2), n, n) 
b <- matrix(runif(n^2), n, n) 
a <- matrix(1, n, n) 

# list or array format for the data you have 
li <- list(r, g, b) 
ar <- array(c(r, g, b), dim = c(n, n, 3)) 

# appending the fourth matrix 
li[[4]] <- a 
ar1 <- array(c(ar, a), dim = c(n, n, 4)) 

# alternatively for array 
library(abind) 
ar2 <- abind(ar, a, along = 3) 

# if you have a list and need an array 
sapply(li, identity, simplify = "array") 
関連する問題