diff --git a/codec.m b/codec.m index 7d8d77bb1bdc217bd061e74e8ef4d68d273c9285..e4104ebd7b03bd6b6277848d8bdb4f838bfef029 100644 --- a/codec.m +++ b/codec.m @@ -63,9 +63,15 @@ if ~exist(recDir,'dir') mkdir(recDir); end +% Do padding +LFSize = size(LFRef); +LFSizePad = ceil(LFSize./LFParams.padding).*LFParams.padding-LFSize; +LFSizePad(3:end) = 0; +LFRef = padarray(LFRef,LFSizePad,'replicate','post'); + % Write input yuv file if LFParams.encode - [imgSize,imgRes,imgSizePad] = LF.write(LFRef,LFParams,'filename',LFParams.refFilename); + [imgSizePad,imgRes] = LF.write(LFRef,LFParams,'filename',LFParams.refFilename); end % Convert inputs for HEVC @@ -76,7 +82,11 @@ LFHEVCParams = LF.LFtoHEVC(imgSizePad,imgRes,LFParams,HEVCParams); % Read output yuv file if LFParams.decode - LFRec = LF.read(imgSize,imgRes,LFParams,'filename',LFParams.recFilename); + LFRec = LF.read(imgSizePad,imgRes,LFParams,'filename',LFParams.recFilename); end +% Undo padding +gv = arrayfun(@(x) 1:x,LFSize,'UniformOutput',false); +LFRec = LFRec(gv{:}); + end \ No newline at end of file diff --git a/pad.m b/pad.m deleted file mode 100644 index 1e26b76edec36ed71ed1e81833da2e09b8a4d201..0000000000000000000000000000000000000000 --- a/pad.m +++ /dev/null @@ -1,18 +0,0 @@ -function [LFRef,imgSizePad] = pad(LFRef,padding) -%PAD Pad lightfield data -% [LFRef,LFSizePad] = pad(LFRef,blockSize) - -LFSize = size(LFRef); -imgSize = LFSize(1:3); -imgRes = LFSize(4:end); - -imgSizePad = ceil(imgSize./padding).*padding; -imgSizePad(3) = imgSize(3); - -padSize = [imgSizePad-imgSize,zeros(1,numel(imgRes))]; -padSizePre = floor(padSize/2); -padSizePost = padSize - padSizePre; - -LFRef = padarray(LFRef,padSizePre ,'replicate','pre' ); -LFRef = padarray(LFRef,padSizePost,'replicate','post'); -end \ No newline at end of file diff --git a/read.m b/read.m index 4c2eda78bcd1b787dae6359a434785f36baf8113..3fab737cde930b65101d9594c43f65cc8421a677 100644 --- a/read.m +++ b/read.m @@ -7,22 +7,15 @@ filename = fullfile(pwd,'sequence'); % Create input parser scheme p = inputParser; p.StructExpand = true; p.KeepUnmatched = true; p.addParameter('filename', filename, @ischar); -p.addParameter('padding' , 1 , @isnumeric); % Parse arguments p.parse(varargin{:}); %filename = p.Results.filename; -padding = p.Results.padding; % Recover frames -imgSizePad = ceil(imgSize./padding).*padding; -imgSizePad(3) = imgSize(3); -frames = yuv.read(imgSizePad,imgRes,varargin{:}); +frames = yuv.read(imgSize,imgRes,varargin{:}); % Recover LF LFRec = LF.fromSlices(frames); -% Undo padding -LFRec = LF.unpad(LFRec,imgSize); - end \ No newline at end of file diff --git a/unpad.m b/unpad.m deleted file mode 100644 index f987f977e0703ff9eb22d84fb3beb9b5aebd7d6c..0000000000000000000000000000000000000000 --- a/unpad.m +++ /dev/null @@ -1,17 +0,0 @@ -function LFRef = unpad(LFRef,imgSize) -%UNPAD Remove padding from lightfield data -% LFRef = unpad(LFRef,LFSize) - -LFSizePad = size(LFRef); -imgSizePad = LFSizePad(1:3); -imgRes = LFSizePad(4:end); - -padSize = [imgSizePad-imgSize,zeros(1,numel(imgRes))]; -padSizePre = floor(padSize/2); -padSizePost = padSize - padSizePre; - -gv = arrayfun(@(lfsizepad,pre,post) (1+pre):(lfsizepad-post),... - LFSizePad,padSizePre,padSizePost,'UniformOutput',false); - -LFRef = LFRef(gv{:}); -end \ No newline at end of file diff --git a/write.m b/write.m index f55c075b4a252c0252cb0d947441c0540de24607..79f07433e2ba006fe6e1349705cbc1487c0a0899 100644 --- a/write.m +++ b/write.m @@ -1,4 +1,4 @@ -function [imgSize,imgRes,imgSizePad] = write(LFRef,varargin) +function [imgSize,imgRes] = write(LFRef,varargin) %WRITE Write lightfield 4D(u,v,x,y) data to yuv file % [LFSize,yuvSize] = WRITE(LFRef,varargin) @@ -7,24 +7,15 @@ filename = fullfile(pwd,'sequence'); % Create input parser scheme p = inputParser; p.StructExpand = true; p.KeepUnmatched = true; p.addParameter('filename', filename, @ischar); -p.addParameter('padding' , 1 , @isnumeric); % Parse arguments p.parse(varargin{:}); -filename = p.Results.filename; -padding = p.Results.padding; +%filename = p.Results.filename; LFSize = size(LFRef); imgSize = LFSize(1:3); imgRes = LFSize(4:end); -m = utils.getMat(filename,true); -m.imgSize = imgSize; -m.imgRes = imgRes; - -% Do padding -[LFRef,imgSizePad] = LF.pad(LFRef,padding); - % Change 5D LF to a collection of 2D frames frames = LF.toSlices(LFRef);