From 5fef6fe0795bd3bf6712c78d40adfe905d80d7fd Mon Sep 17 00:00:00 2001 From: Elian Dib <elian.dib@inria.fr> Date: Tue, 7 May 2019 13:40:31 +0200 Subject: [PATCH] Changed padding parameter --- codec.m | 6 +++--- pad.m | 10 ++++------ read.m | 11 ++++++----- unpad.m | 6 ++++-- write.m | 9 ++++----- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/codec.m b/codec.m index bfa7b7f..7d8d77b 100644 --- a/codec.m +++ b/codec.m @@ -29,7 +29,7 @@ p.addParameter('subSamp' , subSamp , @ischar); p.addParameter('bitDepth' , bitDepth , @isnumeric); p.addParameter('inColSpace' , 'rgb' , @ischar); p.addParameter('outColSpace', 'ycbcr' , @ischar); -p.addParameter('padding' , true , @islogical); +p.addParameter('padding' , 8 , @isnumeric); p.addParameter('encode' , true , @islogical); p.addParameter('decode' , true , @islogical); @@ -65,11 +65,11 @@ end % Write input yuv file if LFParams.encode - [imgSize,imgRes] = LF.write(LFRef,LFParams,'filename',LFParams.refFilename); + [imgSize,imgRes,imgSizePad] = LF.write(LFRef,LFParams,'filename',LFParams.refFilename); end % Convert inputs for HEVC -LFHEVCParams = LF.LFtoHEVC(imgSize,imgRes,LFParams,HEVCParams); +LFHEVCParams = LF.LFtoHEVC(imgSizePad,imgRes,LFParams,HEVCParams); % Encode frames using HEVC [nbBits,peaksnr] = HEVC.codec(LFHEVCParams,HEVCParams); diff --git a/pad.m b/pad.m index e8aad25..1e26b76 100644 --- a/pad.m +++ b/pad.m @@ -1,17 +1,15 @@ -function [LFRef,LFSizePad] = pad(LFRef,blockSize) +function [LFRef,imgSizePad] = pad(LFRef,padding) %PAD Pad lightfield data % [LFRef,LFSizePad] = pad(LFRef,blockSize) LFSize = size(LFRef); -LFSize(3) = 0; imgSize = LFSize(1:3); imgRes = LFSize(4:end); -imgSizePad = ceil(imgSize./blockSize).*blockSize; +imgSizePad = ceil(imgSize./padding).*padding; +imgSizePad(3) = imgSize(3); -LFSizePad = [imgSizePad,imgRes]; - -padSize = LFSizePad-LFSize; +padSize = [imgSizePad-imgSize,zeros(1,numel(imgRes))]; padSizePre = floor(padSize/2); padSizePost = padSize - padSizePre; diff --git a/read.m b/read.m index 81d8c5d..4c2eda7 100644 --- a/read.m +++ b/read.m @@ -7,7 +7,7 @@ filename = fullfile(pwd,'sequence'); % Create input parser scheme p = inputParser; p.StructExpand = true; p.KeepUnmatched = true; p.addParameter('filename', filename, @ischar); -p.addParameter('padding' , false , @islogical); +p.addParameter('padding' , 1 , @isnumeric); % Parse arguments p.parse(varargin{:}); @@ -15,13 +15,14 @@ p.parse(varargin{:}); padding = p.Results.padding; % Recover frames -frames = yuv.read(imgSize,imgRes,varargin{:}); +imgSizePad = ceil(imgSize./padding).*padding; +imgSizePad(3) = imgSize(3); +frames = yuv.read(imgSizePad,imgRes,varargin{:}); % Recover LF LFRec = LF.fromSlices(frames); -if padding - LFRec = LF.unpad(LFRec,[imgSize,imgRes]); -end +% Undo padding +LFRec = LF.unpad(LFRec,imgSize); end \ No newline at end of file diff --git a/unpad.m b/unpad.m index b62c825..f987f97 100644 --- a/unpad.m +++ b/unpad.m @@ -1,10 +1,12 @@ -function LFRef = unpad(LFRef,LFSize) +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 = LFSizePad-LFSize; +padSize = [imgSizePad-imgSize,zeros(1,numel(imgRes))]; padSizePre = floor(padSize/2); padSizePost = padSize - padSizePre; diff --git a/write.m b/write.m index c31b486..f55c075 100644 --- a/write.m +++ b/write.m @@ -1,4 +1,4 @@ -function [imgSize,imgRes] = write(LFRef,varargin) +function [imgSize,imgRes,imgSizePad] = write(LFRef,varargin) %WRITE Write lightfield 4D(u,v,x,y) data to yuv file % [LFSize,yuvSize] = WRITE(LFRef,varargin) @@ -7,7 +7,7 @@ filename = fullfile(pwd,'sequence'); % Create input parser scheme p = inputParser; p.StructExpand = true; p.KeepUnmatched = true; p.addParameter('filename', filename, @ischar); -p.addParameter('padding' , false , @islogical); +p.addParameter('padding' , 1 , @isnumeric); % Parse arguments p.parse(varargin{:}); @@ -22,9 +22,8 @@ m = utils.getMat(filename,true); m.imgSize = imgSize; m.imgRes = imgRes; -if padding - LFRef = LF.pad(LFRef,8); -end +% Do padding +[LFRef,imgSizePad] = LF.pad(LFRef,padding); % Change 5D LF to a collection of 2D frames frames = LF.toSlices(LFRef); -- GitLab