Mentions légales du service

Skip to content
Snippets Groups Projects
Commit ef3d0f21 authored by DIB Elian's avatar DIB Elian
Browse files

Allowed multiple super-rays to be used for light field reconstruction

parent c6172e29
No related merge requests found
...@@ -54,6 +54,11 @@ fprintf('\n'); ...@@ -54,6 +54,11 @@ fprintf('\n');
progress('',0); progress('',0);
wgriddata = warning('query','MATLAB:griddata:DuplicateDataPoints');
wscattered = warning('query','MATLAB:scatteredInterpolant:DupPtsAvValuesWarnId');
warning('off','MATLAB:griddata:DuplicateDataPoints');
warning('off','MATLAB:scatteredInterpolant:DupPtsAvValuesWarnId');
%% Compute light field using interpolation %% Compute light field using interpolation
% Compute light field super-ray by super-ray % Compute light field super-ray by super-ray
for lab = 1:numLab for lab = 1:numLab
...@@ -78,19 +83,53 @@ for lab = 1:numLab ...@@ -78,19 +83,53 @@ for lab = 1:numLab
'\nView ',num2str(v),'/',num2str(numView),'\n']; '\nView ',num2str(v),'/',num2str(numView),'\n'];
progress(msg); progress(msg);
% Compute missing reference data mask SRXSub = [];
NaNMask = ~(isnan(SRX{lab}(:,:,v)) | isnan(SRY{lab}(:,:,v))); SRYSub = [];
SRLabSub = [];
SRDispSub = [];
SRColSub = [];
% Remove missing reference data for subLab = 1:numLab
SRXSub = SRX{lab}(:,:,v); % Remove missing reference data
SRXSub = reshape(SRXSub(NaNMask),[],1); SRXSubLab = SRX{subLab}(:,:,v);
SRYSub = SRY{lab}(:,:,v); SRYSubLab = SRY{subLab}(:,:,v);
SRYSub = reshape(SRYSub(NaNMask),[],1); SRLabSubLab = SRLab{subLab}(:,:,v);
SRLabSub = SRLab{lab}(:,:,v); SRDispSubLab = SRDisp{subLab}(:,:,v);
SRLabSub = reshape(SRLabSub(NaNMask),[],1); SRColSubLab = cat(numChan,nan(size(SRXSubLab)));
SRDispSub = SRDisp{lab}(:,:,v); for c = 1:numChan
SRDispSub = reshape(SRDispSub(NaNMask),[],1); SRColSubLab(:,:,c) = SRCol{subLab}(:,:,c,v);
end
SRXSubLab = reshape(SRXSubLab,[],1);
SRYSubLab = reshape(SRYSubLab,[],1);
SRLabSubLab = reshape(SRLabSubLab,[],1);
SRDispSubLab = reshape(SRDispSubLab,[],1);
SRColSubLab = reshape(SRColSubLab,[],numChan);
inMask = ...
SRXSubLab>=srxqmin-1 & SRXSubLab<=srxqmax+1 &...
SRYSubLab>=sryqmin-1 & SRYSubLab<=sryqmax+1;
SRXSub = cat(1,SRXSub,SRXSubLab(inMask,:));
SRYSub = cat(1,SRYSub,SRYSubLab(inMask,:));
SRLabSub = cat(1,SRLabSub,SRLabSubLab(inMask,:));
SRDispSub = cat(1,SRDispSub,SRDispSubLab(inMask,:));
SRColSub = cat(1,SRColSub,SRColSubLab(inMask,:));
end
% Compute missing reference data mask
NaNMask = ~(isnan(SRXSub) | isnan(SRYSub));
% SRXSub = reshape(SRXSub(NaNMask),[],1);
% SRYSub = reshape(SRYSub(NaNMask),[],1);
% SRLabSub = reshape(SRLabSub(NaNMask),[],1);
% SRDispSub = reshape(SRDispSub(NaNMask),[],1);
% SRColSub = reshape(SRColSub(NaNMask,:),[],numChan);
SRXSub = SRXSub(NaNMask,:);
SRYSub = SRYSub(NaNMask,:);
SRLabSub = SRLabSub(NaNMask,:);
SRDispSub = SRDispSub(NaNMask,:);
SRColSub = SRColSub(NaNMask,:);
% Interpolate label % Interpolate label
LabInt = griddata(SRXSub,SRYSub,SRLabSub,LFXq(xgv,ygv),LFYq(xgv,ygv),'nearest'); LabInt = griddata(SRXSub,SRYSub,SRLabSub,LFXq(xgv,ygv),LFYq(xgv,ygv),'nearest');
...@@ -111,12 +150,8 @@ for lab = 1:numLab ...@@ -111,12 +150,8 @@ for lab = 1:numLab
LFDisp(xgv,ygv,1,v) = DispTemp; LFDisp(xgv,ygv,1,v) = DispTemp;
for c = 1:numChan for c = 1:numChan
% Remove missing reference data %Interpolate color
SRColSub = SRCol{lab}(:,:,c,v); LFColInt = griddata(SRXSub,SRYSub,SRColSub(:,c),LFXq(xgv,ygv),LFYq(xgv,ygv),Method);
SRColSub = reshape(SRColSub(NaNMask),[],1);
%Interpolate disparity
LFColInt = griddata(SRXSub,SRYSub,SRColSub,LFXq(xgv,ygv),LFYq(xgv,ygv),Method);
% Update light field color % Update light field color
LFColTemp = Color(xgv,ygv,c,v); LFColTemp = Color(xgv,ygv,c,v);
...@@ -127,6 +162,9 @@ for lab = 1:numLab ...@@ -127,6 +162,9 @@ for lab = 1:numLab
end end
fprintf('\n\n'); fprintf('\n\n');
warning(wgriddata.state,'MATLAB:griddata:DuplicateDataPoints');
warning(wscattered.state,'MATLAB:scatteredInterpolant:DupPtsAvValuesWarnId');
LFSet = SR.FieldsToSet(ImgSize,ImgRes,Offset,Color,Label); LFSet = SR.FieldsToSet(ImgSize,ImgRes,Offset,Color,Label);
function progress(msg,varargin) function progress(msg,varargin)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment