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