-
-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathflowFileLoader.lua
34 lines (31 loc) · 931 Bytes
/
flowFileLoader.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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
}