36 lines
1.1 KiB
Lua
36 lines
1.1 KiB
Lua
|
local gm = require 'graphicsmagick'
|
||
|
local image = require 'image'
|
||
|
local iproc = {}
|
||
|
|
||
|
function iproc.sample(src, width, height)
|
||
|
local t = "float"
|
||
|
if src:type() == "torch.ByteTensor" then
|
||
|
t = "byte"
|
||
|
end
|
||
|
local im = gm.Image(src, "RGB", "DHW")
|
||
|
im:sample(math.ceil(width), math.ceil(height))
|
||
|
return im:toTensor(t, "RGB", "DHW")
|
||
|
end
|
||
|
function iproc.scale(src, width, height, filter)
|
||
|
local t = "float"
|
||
|
if src:type() == "torch.ByteTensor" then
|
||
|
t = "byte"
|
||
|
end
|
||
|
filter = filter or "Box"
|
||
|
local im = gm.Image(src, "RGB", "DHW")
|
||
|
im:size(math.ceil(width), math.ceil(height), filter)
|
||
|
return im:toTensor(t, "RGB", "DHW")
|
||
|
end
|
||
|
function iproc.padding(img, w1, w2, h1, h2)
|
||
|
local dst_height = img:size(2) + h1 + h2
|
||
|
local dst_width = img:size(3) + w1 + w2
|
||
|
local flow = torch.Tensor(2, dst_height, dst_width)
|
||
|
flow[1] = torch.ger(torch.linspace(0, dst_height -1, dst_height), torch.ones(dst_width))
|
||
|
flow[2] = torch.ger(torch.ones(dst_height), torch.linspace(0, dst_width - 1, dst_width))
|
||
|
flow[1]:add(-h1)
|
||
|
flow[2]:add(-w1)
|
||
|
return image.warp(img, flow, "simple", false, "clamp")
|
||
|
end
|
||
|
|
||
|
return iproc
|