2015-10-24 3 views
3

Я хочу сделать (данные цвета изображения) Array{UInt8,3} из Array{UInt8,2} (данные изображения с оттенками серого) в Юли 0,4, как в следующем:Как преобразовать вложенный массив многомерный массив в Джулии

using Images 
dat = data(img) 
dat2 = map(x -> (v = x*2 % UInt8; [v,0,0]), dat) 
img2 = colorim(dat2) 

Однако, код выше составляет Array{Array{UInt8,1},2}. Как я могу «сгладить» многомерный массив?

ответ

2

Использование массива понимание:

dat2 = UInt8[k==1 ? (dat[i,j]*2)%UInt8 : zero(UInt8) 
      for i=1:size(dat,1),j=1:size(dat,2),k=1:3] 
2

Другой подход может быть:

dat2=zeros(UInt8,(size(dat)...,3)) 
dat2[:,:,1]=2*dat1 
4

Вы также можете использовать

z = zeros(UInt8, size(A)) 
colorim(cat(3, A, z, z)) 

где A является то, что вы хотите в красном канале.