在Julia中通过“N”由3个数组生成一个HSV图像

时间:2015-02-20 18:36:57

标签: image julia

我有MN乘以3个浮点数的数组,我想把它解释为图像的HSV通道。我想生成并导出图像。

根据功能文档,

colorim(A, [colorspace])
     

从AbstractArray创建一个二维彩色图像,自动检测哪个   第一个或最后一个维度对颜色进行编码并在两者之间进行选择   "水平 - "和#34;垂直专业"因此。 colorspace默认为   " RGB"但也可以是例如"实验室"或" HSV"。

我首先测试了RGB情况:

using Images
imwrite(colorim(rand(Float64, 200, 200, 3), "RGB"), "Image.PNG")

产生以下内容:

enter image description here

然而,当我更换" RGB"用" HSV"根据文档,我收到一条错误消息。

将数组解释并导出为HSV数据的正确语法是什么?

2 个答案:

答案 0 :(得分:5)

using Images, Color
B = permutedims(A, [3,1,2])  # put color first
C = reinterpret(HSV{Float64}, B)

答案 1 :(得分:1)

Tim Holy给出了部分答案,即首先必须使用Array{HSV{Float64}, 2}将数据转换为reinterpret。缺少的部分是,imwrite似乎与使用HSV元素的数组完美匹配,并且使用Array{RGB{Float64}, 2}转换为convert是必要的,正如Tim在A = ones(Float64, 3, 200, 200); A[1, :, :] = 180.0; B = reinterpret(HSV{Float64}, A); C = convert(Array{RGB{Float64}}, B); imwrite(C, "test.png") 所指出的那样。 {3}}

把这一切放在一起:

{{1}}

enter image description here