JuliaIO / NRRD.jl

Julia support for the Nearly Raw Raster Data (NRRD) image file format
Other
10 stars 9 forks source link

NRRD

Build status codecov.io PkgEval

Package for reading NRRD files. Implements the FileIO interface.

Originally located in Images.jl

Writing plain NRRD headers

Normal usage is as easy as

img = load("myfile.nrrd")
img = load("myfile.nhdr")
save("myotherfile.nrrd", img)

However, if you already have a raw binary representing the "data file", the FileIO interface isn't sufficently flexible for writing just the header. Assuming you want to save "rich" axis information, a low-level approach using AxisArrays is the following:

using NRRD, FileIO, ImageCore, AxisArrays, Unitful
using Unitful: μm, s

# For a 480x640x200 image with time as the third axis,
# assuming a pixel spacing of 0.25μm and a framerate of 8fps
axy = Axis{:y}((1:480)*0.25μm)
axx = Axis{:x}((1:640)*0.25μm)
axt = Axis{:time}((1:200)*0.125s)

header = NRRD.headerinfo(N0f16, (axy, axx, axt))  # assuming N0f16 data
header["datafile"] = "mydata.raw"

open("mydata.nhdr", "w") do io
    write(io, magic(format"NRRD"))
    NRRD.write_header(io, "0004", header)
end