From 3669fb22e9ba423e4b9ba2a1895c35fdd14cca31 Mon Sep 17 00:00:00 2001 From: Elian Dib <elian.dib@inria.fr> Date: Tue, 9 Jul 2019 18:09:34 +0200 Subject: [PATCH] Made some minor changes for clarity --- LFtoSR.m | 42 +++++++++++++++++------------------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/LFtoSR.m b/LFtoSR.m index 0b743e9..791eea3 100644 --- a/LFtoSR.m +++ b/LFtoSR.m @@ -5,7 +5,7 @@ function [SRRef,SRDisp] = LFtoSR(LFRef,LFDisp,Method) %% Initialize constants and interpolants % Lightfield properties LFSize = size(LFRef.Color); -ImgSize = LFSize(1:2); +ImgSize = LFSize(1:3); numChan = LFSize(3); ImgRes = LFSize(4:end); Offset = LFRef.Offset; @@ -17,15 +17,14 @@ numLab = max(Label(:)); % Initialize super-ray fields [SROff,SRCol,SRLab,SRDisp] = deal(cell(numLab,1)); -[srxqgv,sryqgv] = deal(cell(numLab,1)); % Pad values Color = padarray(Color,[1,1,0,0,0],nan,'both'); Label = padarray(Label,[1,1,0,0,0],nan,'both'); LFDisp = padarray(LFDisp,[1,1,0,0,0],nan,'both'); ImgSize(1:2) = ImgSize(1:2)+2; -LFSize = [ImgSize,ImgRes]; Offset(1:2) = Offset(1:2)-1; +LFSize = [ImgSize,ImgRes]; seh = strel('arbitrary',[1,0,1]); sev = strel('arbitrary',[1,0,1]'); @@ -45,14 +44,14 @@ LFDisp(isnan(LFDisp))=0; % Compute projected coordinates of reference samples gv = arrayfun(@(x) 1:x,LFSize,'UniformOutput',false); -ugv = reshape(gv{3},1,1,[],1); -vgv = reshape(gv{4},1,1,1,[]); +ugv = reshape(gv{4},1,1,1,[],1); +vgv = reshape(gv{5},1,1,1,1,[]); ugv = ugv-centerView(1); vgv = vgv-centerView(2); [LFX,LFY] = ndgrid(gv{:}); -LFX = LFX-ugv.*reshape(LFDisp,LFSize); -LFY = LFY-vgv.*reshape(LFDisp,LFSize); +LFX = LFX-ugv.*reshape(LFDisp,LFSize) + Offset(1); +LFY = LFY-vgv.*reshape(LFDisp,LFSize) + Offset(2); progress(''); @@ -62,7 +61,7 @@ warning('off','MATLAB:griddata:DuplicateDataPoints'); warning('off','MATLAB:scatteredInterpolant:DupPtsAvValuesWarnId'); %% Initialize super-rays -fprintf('Super-ray initialization...\n'); +fprintf('Super-ray computation...\n'); for lab = 1:numLab msg = ['Initializing super-ray ',num2str(lab),'/',num2str(numLab),'\n']; progress(msg); @@ -76,25 +75,18 @@ for lab = 1:numLab sryqmin = floor(min(SRY(:))); sryqmax = ceil (max(SRY(:))); - srxqgv{lab} = srxqmin:srxqmax; - sryqgv{lab} = sryqmin:sryqmax; + srxqgv = srxqmin:srxqmax; + sryqgv = sryqmin:sryqmax; - SROff{lab} = Offset+[srxqmin,sryqmin,1,1,1]-1; + SROff{lab} = [srxqmin,sryqmin,1,1,1]-1; % Initialize super-ray color, label and disparities - SRCol {lab} = nan([numel(srxqgv{lab}),numel(sryqgv{lab}),numChan,ImgRes]); - SRLab {lab} = nan([numel(srxqgv{lab}),numel(sryqgv{lab}),1 ,ImgRes]); - SRDisp{lab} = nan([numel(srxqgv{lab}),numel(sryqgv{lab}),1 ,ImgRes]); -end -fprintf('\n'); - -progress('',0); - -%% Compute super-rays using interpolation -fprintf('Super-ray interpolation...\n'); -for lab = 1:numLab + SRCol {lab} = nan([numel(srxqgv),numel(sryqgv),numChan,ImgRes]); + SRLab {lab} = nan([numel(srxqgv),numel(sryqgv),1 ,ImgRes]); + SRDisp{lab} = nan([numel(srxqgv),numel(sryqgv),1 ,ImgRes]); + % Compute query grid for current super-ray - [SRXq,SRYq] = ndgrid(srxqgv{lab},sryqgv{lab}); + [SRXq,SRYq] = ndgrid(srxqgv,sryqgv); % Compute super-ray view by view for v = 1:numView @@ -104,8 +96,8 @@ for lab = 1:numLab % Reduce number of reference points for speed Mask = ...true(size(LFX(:,:,v))); - LFX(:,:,v)>=min(srxqgv{lab})-1 & LFX(:,:,v)<=max(srxqgv{lab})+1 & ... - LFY(:,:,v)>=min(sryqgv{lab})-1 & LFY(:,:,v)<=max(sryqgv{lab})+1; + LFX(:,:,v)>=min(srxqgv)-1 & LFX(:,:,v)<=max(srxqgv)+1 & ... + LFY(:,:,v)>=min(sryqgv)-1 & LFY(:,:,v)<=max(sryqgv)+1; [~,mgv] = utils.tighten(Mask); -- GitLab