diff options
Diffstat (limited to 'flowFileLoader.lua')
| -rw-r--r-- | flowFileLoader.lua | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/flowFileLoader.lua b/flowFileLoader.lua new file mode 100644 index 0000000..f185c3c --- /dev/null +++ b/flowFileLoader.lua @@ -0,0 +1,34 @@ +require 'torch' +require 'image' + +--[[ + Reads a flow field from a binary flow file. + + bytes contents + 0-3 tag: "PIEH" in ASCII, which in little endian happens to be the float 202021.25 + (just a sanity check that floats are represented correctly) + 4-7 width as an integer + 8-11 height as an integer + 12-end data (width*height*2*4 bytes total) +--]] +local function flowFileLoader_load(fileName, scale) + local flowFile = torch.DiskFile(fileName, 'r') + flowFile:binary() + flowFile:readFloat() + local W = flowFile:readInt() + local H = flowFile:readInt() + -- image.warp needs 2xHxW, and also expects (y, x) for some reason... + local flow = torch.Tensor(2, H, W) + for y=1, H do + for x=1, W do + flow[2][y][x] = flowFile:readFloat() * scale + flow[1][y][x] = flowFile:readFloat() * scale + end + end + flowFile:close() + return flow +end + +return { + load = flowFileLoader_load +} |
