Mentions légales du service
Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
SR
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Container registry
Model registry
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
LightFieldCodingLibrary
SR
Commits
c6172e29
Commit
c6172e29
authored
6 years ago
by
DIB Elian
Browse files
Options
Downloads
Patches
Plain Diff
Changed super-ray computation to allow scattered data
parent
56f3bdee
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
LFtoSR.m
+102
-65
102 additions, 65 deletions
LFtoSR.m
SRtoLF.m
+99
-47
99 additions, 47 deletions
SRtoLF.m
with
201 additions
and
112 deletions
LFtoSR.m
+
102
−
65
View file @
c6172e29
function
[
SRSet
,
varargout
]
=
LFtoSR
(
LFSet
,
Xq
,
Yq
,
Method
,
varargin
)
function
[
SRSet
,
SRDisp
]
=
LFtoSR
(
LFSet
,
LFDisp
,
Method
)
%LFTOSR Builds a super-ray set from a light-field
%LFTOSR Builds a super-ray set from a light-field
% LFTOSR(LFSet)
% LFTOSR(LFSet)
%% Initialize constants and interpolants
%% Initialize constants and interpolants
% Lightfield properties
% Lightfield properties
ImgSize
=
LFSet
.
ImgSize
(
1
:
2
);
numChan
=
LFSet
.
ImgSize
(
3
);
ImgRes
=
LFSet
.
ImgRes
;
ImgRes
=
LFSet
.
ImgRes
;
Offset
=
LFSet
.
Offset
;
Offset
=
LFSet
.
Offset
;
Color
=
LFSet
.
Color
;
Color
=
LFSet
.
Color
;
Label
=
LFSet
.
Label
;
Label
=
LFSet
.
Label
;
ResOff
=
num2cell
(
floor
(
ImgRes
/
2
)
+
1
);
ResOff
=
floor
(
ImgRes
/
2
)
+
1
;
numChan
=
size
(
Color
,
3
);
LFSize
=
[
ImgSize
,
ImgRes
];
% Number of super-rays to be in the set
numLab
=
numel
(
Xq
);
numView
=
prod
(
ImgRes
);
numView
=
prod
(
ImgRes
);
numLab
=
max
(
Label
(:));
% Initialize super-ray set
% Initialize super-ray fields
[
SRImgSize
,
SRImgRes
,
SROff
,
SRCol
,
SRLab
]
=
deal
(
cell
(
numLab
,
1
));
[
SRImgSize
,
SRImgRes
,
SROff
,
SRCol
,
SRLab
,
SRDisp
]
=
deal
(
cell
(
numLab
,
1
));
varargout
=
cell
(
1
,
nargin
-
4
);
[
srxqgv
,
sryqgv
]
=
deal
(
cell
(
numLab
,
1
));
varargout
(:)
=
deal
({
cell
(
numLab
,
1
)});
% Initialize interpolants
ValInt
=
griddedInterpolant
(
Color
(:,:,
1
),
Method
,
'none'
);
sizeMsg
=
0
;
% Replace missing values by zero (to avoid interpolation errors)
Color
(
isnan
(
Color
))
=
0
;
Color
(
isnan
(
Color
))
=
0
;
Label
(
isnan
(
Label
))
=
0
;
Label
(
isnan
(
Label
))
=
0
;
LFDisp
(
isnan
(
LFDisp
))
=
0
;
for
it
=
1
:
nargin
-
4
% Compute projected coordinates of reference samples
varargin
{
it
}(
isnan
(
varargin
{
it
}))
=
0
;
gv
=
arrayfun
(
@
(
x
)
1
:
x
,
LFSize
,
'UniformOutput'
,
false
);
end
ugv
=
reshape
(
gv
{
3
},
1
,
1
,[],
1
);
vgv
=
reshape
(
gv
{
4
},
1
,
1
,
1
,[]);
ugv
=
ugv
-
ResOff
(
1
);
vgv
=
vgv
-
ResOff
(
2
);
%% Build super-ray set
[
LFX
,
LFY
]
=
ndgrid
(
gv
{:});
fprintf
(
'\n'
);
LFX
=
LFX
-
ugv
.*
reshape
(
LFDisp
,
LFSize
);
LFY
=
LFY
-
vgv
.*
reshape
(
LFDisp
,
LFSize
);
progress
(
''
);
%% Initialize super-rays
fprintf
(
'Super-ray initialization...\n'
);
for
lab
=
1
:
numLab
for
lab
=
1
:
numLab
fprintf
(
repmat
(
'\b'
,
1
,
sizeMsg
));
msg
=
[
'Initializing super-ray '
,
num2str
(
lab
),
'/'
,
num2str
(
numLab
),
'\n'
];
msg
=
[
'Constructing super-ray '
num2str
(
lab
)
'/'
num2str
(
numLab
)];
progress
(
msg
);
sizeMsg
=
numel
(
msg
);
fprintf
(
msg
);
% Set current super-ray size
% Compute super-ray grid boundary
SRSize
=
size
(
Xq
{
lab
});
SRX
=
LFX
(
Label
==
lab
);
SRSize
=
[
SRSize
(
1
:
2
),
numChan
,
SRSize
(
3
:
end
)];
SRY
=
LFY
(
Label
==
lab
);
SRImgSize
{
lab
}
=
SRSize
(
1
:
3
);
SRImgRes
{
lab
}
=
SRSize
(
4
:
end
);
% Set current super-ray position (offset from reference frame center)
Xqmin
=
floor
(
min
(
Xq
{
lab
}(:,:,
ResOff
{:})));
Yqmin
=
floor
(
min
(
Yq
{
lab
}(:,:,
ResOff
{:})));
SROff
{
lab
}
=
Offset
+
[
min
(
Xqmin
(:)),
min
(
Yqmin
(:)),
1
,
1
,
1
]
-
1
;
srxqmin
=
floor
(
min
(
SRX
(:)));
srxqmax
=
ceil
(
max
(
SRX
(:)));
% Set current super-ray color, label and disparities
sryqmin
=
floor
(
min
(
SRY
(:)));
SRCol
{
lab
}
=
nan
(
SRSize
);
sryqmax
=
ceil
(
max
(
SRY
(:)));
SRLab
{
lab
}
=
nan
(
SRSize
);
for
it
=
1
:
nargin
-
4
varargout
{
it
}{
lab
}
=
nan
(
SRSize
);
end
ValInt
.
Method
=
Method
;
srxqgv
{
lab
}
=
srxqmin
:
srxqmax
;
ValInt
.
ExtrapolationMethod
=
'none'
;
sryqgv
{
lab
}
=
sryqmin
:
sryqmax
;
for
c
=
1
:
numChan
% Compute super-ray size and offset wrt reference origin
for
v
=
1
:
numView
SRSize
=
[
numel
(
srxqgv
{
lab
}),
numel
(
sryqgv
{
lab
}),
numChan
,
ImgRes
];
ValInt
.
Values
=
Color
(:,:,
c
,
v
);
SRImgSize
{
lab
}
=
SRSize
(
1
:
3
);
SRCol
{
lab
}(:,:,
c
,
v
)
=
ValInt
(
Xq
{
lab
}(:,:,
v
),
Yq
{
lab
}(:,:,
v
));
SRImgRes
{
lab
}
=
SRSize
(
4
:
end
);
%SRCol{lab}(:,:,c,v) = interp2(Color(:,:,c,v),Yq(:,:,v),Xq(:,:,v),Method,nan);
end
end
for
it
=
1
:
nargin
-
4
SROff
{
lab
}
=
Offset
+
[
srxqmin
,
sryqmin
,
1
,
1
,
1
]
-
1
;
for
c
=
1
:
size
(
varargin
{
it
},
3
)
for
v
=
1
:
numView
ValInt
.
Values
=
varargin
{
it
}(:,:,
c
,
v
);
varargout
{
it
}{
lab
}(:,:,
c
,
v
)
=
ValInt
(
Xq
{
lab
}(:,:,
v
),
Yq
{
lab
}(:,:,
v
));
%varargout{it}{lab}(:,:,c,v) = interp2(Color(:,:,c,v),Yq(:,:,v),Xq(:,:,v),Method,nan);
end
end
end
ValInt
.
Method
=
'nearest'
;
% Initialize super-ray color, label and disparities
ValInt
.
ExtrapolationMethod
=
'none'
;
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
% Compute query grid for current super-ray
[
SRXq
,
SRYq
]
=
ndgrid
(
srxqgv
{
lab
},
sryqgv
{
lab
});
% Compute super-ray view by view
for
v
=
1
:
numView
for
v
=
1
:
numView
ValInt
.
Values
=
Label
(:,:,
1
,
v
);
msg
=
[
'Interpolating super-ray '
,
num2str
(
lab
),
'/'
,
num2str
(
numLab
),
...
SRLab
{
lab
}(:,:,
1
,
v
)
=
ValInt
(
Xq
{
lab
}(:,:,
v
),
Yq
{
lab
}(:,:,
v
));
'\nView '
,
num2str
(
v
),
'/'
,
num2str
(
numView
),
'\n'
];
%SRLab{lab}(:,:,1,v) = interp2(Label(:,:,c,v),Yq(:,:,v),Xq(:,:,v),Method,nan);
progress
(
msg
);
% 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
;
LFXsub
=
reshape
(
LFX
(:,:,
v
),[],
1
);
LFYsub
=
reshape
(
LFY
(:,:,
v
),[],
1
);
LFXsub
=
LFXsub
(
Mask
,:);
LFYsub
=
LFYsub
(
Mask
,:);
% Interpolate color
for
c
=
1
:
numChan
Colsub
=
reshape
(
Color
(:,:,
c
,
v
),[],
1
);
Colsub
=
Colsub
(
Mask
,:);
SRCol
{
lab
}(:,:,
c
,
v
)
=
griddata
(
LFXsub
,
LFYsub
,
Colsub
,
SRXq
,
SRYq
,
Method
);
end
% Interpolate disparity
LFDispsub
=
reshape
(
LFDisp
(:,:,
1
,
v
),[],
1
);
LFDispsub
=
LFDispsub
(
Mask
,:);
SRDisp
{
lab
}(:,:,
1
,
v
)
=
griddata
(
LFXsub
,
LFYsub
,
LFDispsub
,
SRXq
,
SRYq
,
Method
);
% Interpolate label
Labelsub
=
reshape
(
Label
(:,:,
1
,
v
),[],
1
);
Labelsub
=
Labelsub
(
Mask
,:);
Lab
=
griddata
(
LFXsub
,
LFYsub
,
Labelsub
,
SRXq
,
SRYq
,
'nearest'
);
% Replace out of boundary values in label using cubic interpolation
NaNLab
=
isnan
(
griddata
(
LFXsub
,
LFYsub
,
Labelsub
,
SRXq
,
SRYq
,
'cubic'
));
Lab
(
NaNLab
)
=
nan
;
SRLab
{
lab
}(:,:,
1
,
v
)
=
Lab
;
end
end
end
end
fprintf
(
'\n\n'
);
fprintf
(
'\n\n'
);
% Create super-ray structure from fields
SRSet
=
SR
.
FieldsToSet
(
SRImgSize
,
SRImgRes
,
SROff
,
SRCol
,
SRLab
);
SRSet
=
SR
.
FieldsToSet
(
SRImgSize
,
SRImgRes
,
SROff
,
SRCol
,
SRLab
);
function
progress
(
msg
,
varargin
)
persistent
sz
if
isempty
(
sz
);
sz
=
0
;
end
if
nargin
>
1
;
sz
=
varargin
{
1
};
end
fprintf
(
repmat
(
'\b'
,
1
,
sz
));
fprintf
(
msg
);
sz
=
numel
(
msg
)
-
count
(
msg
,
'\n'
);
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
SRtoLF.m
+
99
−
47
View file @
c6172e29
function
[
LFSet
,
LFDisp
]
=
SRtoLF
(
SRSet
,
SR
Xq
,
SRYq
,
SRDisp
,
LFXq
,
LFYq
,
Method
)
function
[
LFSet
,
LFDisp
]
=
SRtoLF
(
SRSet
,
SR
Disp
,
lfxgv
,
lfygv
,
Method
)
%LFTOSR Builds a super-ray set from a light-field
%LFTOSR Builds a super-ray set from a light-field
%
LFTOSR
(LFSet)
%
SRTOLF
(LFSet)
%%
%%
SRCol
=
{
SRSet
.
Color
};
SRCol
=
{
SRSet
.
Color
};
SRLab
=
{
SRSet
.
Label
};
SRLab
=
{
SRSet
.
Label
};
SROffset
=
{
SRSet
.
Offset
};
SRImgSize
=
{
SRSet
.
ImgSize
};
SRImgRes
=
{
SRSet
.
ImgRes
};
%% Initialize constants and interpolants
%% Initialize constants and interpolants
% Lightfield properties
numChan
=
size
(
SRCol
{
1
},
3
);
numChan
=
size
(
SRCol
{
1
},
3
);
ImgSize
=
[
numel
(
lfxgv
),
numel
(
lfygv
),
numChan
];
ImgRes
=
SRImgRes
{
1
};
Offset
=
[
min
(
lfxgv
),
min
(
lfygv
),
1
,
1
,
1
]
-
1
;
numLab
=
numel
(
SRCol
);
numLab
=
numel
(
SRCol
);
se
=
strel
(
'square'
,
3
);
LFSize
=
size
(
LFXq
);
LFSize
=
[
LFSize
(
1
:
2
),
numChan
,
LFSize
(
3
:
end
)];
ImgSize
=
LFSize
(
1
:
3
);
ImgRes
=
LFSize
(
4
:
end
);
numView
=
prod
(
ImgRes
);
numView
=
prod
(
ImgRes
);
ResOff
=
num2cell
(
floor
(
ImgRes
/
2
)
+
1
);
lfxqmin
=
floor
(
min
(
LFXq
(:,:,
ResOff
{:})));
lfxqmin
=
min
(
lfxqmin
(:));
[
LFXq
,
LFYq
]
=
ndgrid
(
lfxgv
,
lfygv
);
lfxqmax
=
ceil
(
max
(
LFXq
(:,:,
ResOff
{:})));
lfxqmax
=
max
(
lfxqmax
(:));
[
SRX
,
SRY
]
=
deal
(
cell
(
numLab
,
1
));
lfyqmin
=
floor
(
min
(
LFYq
(:,:,
ResOff
{:})));
lfyqmin
=
min
(
lfyqmin
(:));
lfyqmax
=
ceil
(
max
(
LFYq
(:,:,
ResOff
{:})));
lfyqmax
=
max
(
lfyqmax
(:));
lfxgv
=
lfxqmin
:
lfxqmax
;
Color
=
nan
([
ImgSize
(
1
:
2
),
numChan
,
ImgRes
]);
lfygv
=
lfyqmin
:
lfyqmax
;
Label
=
zeros
([
ImgSize
(
1
:
2
),
1
,
ImgRes
]);
LFDisp
=
-
inf
([
ImgSize
(
1
:
2
),
1
,
ImgRes
]);
Offset
=
[
lfxqmin
,
lfyqmin
,
1
,
1
,
1
]
-
1
;
progress
(
''
,
0
)
;
Color
=
nan
(
LFSize
);
%% Compute super-ray coordinates
Label
=
zeros
(
LFSize
);
for
lab
=
1
:
numLab
LFDisp
=
-
inf
(
LFSize
);
msg
=
[
'Initializing super-ray '
,
num2str
(
lab
),
'/'
,
num2str
(
numLab
),
'\n'
];
progress
(
msg
);
% Compute grid coordinates
xgv
=
SROffset
{
lab
}(
1
)
+
(
1
:
SRImgSize
{
lab
}(
1
));
ygv
=
SROffset
{
lab
}(
2
)
+
(
1
:
SRImgSize
{
lab
}(
2
));
ugv
=
1
:
SRImgRes
{
lab
}(
1
);
ugv
=
ugv
-
floor
(
ugv
(
end
)/
2
)
-
1
;
vgv
=
1
:
SRImgRes
{
lab
}(
2
);
vgv
=
vgv
-
floor
(
vgv
(
end
)/
2
)
-
1
;
% Reshape grid coordinate along corresponding dimension
xgv
=
reshape
(
xgv
,[],
1
,
1
,
1
);
ygv
=
reshape
(
ygv
,
1
,[],
1
,
1
);
ugv
=
reshape
(
ugv
,
1
,
1
,[],
1
);
vgv
=
reshape
(
vgv
,
1
,
1
,
1
,[]);
% Compute projected coordinates of reference samples
Disp
=
reshape
(
SRDisp
{
lab
},[
SRImgSize
{
lab
}(
1
:
2
),
SRImgRes
{
lab
}]);
SRX
{
lab
}
=
xgv
+
ugv
.*
Disp
.*
ones
(
size
(
ygv
))
.*
ones
(
size
(
vgv
));
SRY
{
lab
}
=
ygv
+
vgv
.*
Disp
.*
ones
(
size
(
xgv
))
.*
ones
(
size
(
ugv
));
end
fprintf
(
'\n'
);
sizeMsg
=
0
;
progress
(
''
,
0
)
;
fprintf
(
'\n'
);
%% Compute light field using interpolation
% Compute light field super-ray by super-ray
for
lab
=
1
:
numLab
for
lab
=
1
:
numLab
srxqmin
=
floor
(
min
(
SRXq
{
lab
}(:)));
% Compute super-ray boundary
srxqmax
=
ceil
(
max
(
SRXq
{
lab
}(:)));
srxqmin
=
floor
(
min
(
SRX
{
lab
}(:)));
sryqmin
=
floor
(
min
(
SRYq
{
lab
}(:)));
srxqmax
=
ceil
(
max
(
SRX
{
lab
}(:)));
sryqmax
=
ceil
(
max
(
SRYq
{
lab
}(:)));
sryqmin
=
floor
(
min
(
SRY
{
lab
}(:)));
sryqmax
=
ceil
(
max
(
SRY
{
lab
}(:)));
% Reduce number of query points for speed
xgv
=
lfxgv
>=
srxqmin
&
lfxgv
<=
srxqmax
;
xgv
=
lfxgv
>=
srxqmin
&
lfxgv
<=
srxqmax
;
ygv
=
lfygv
>=
sryqmin
&
lfygv
<=
sryqmax
;
ygv
=
lfygv
>=
sryqmin
&
lfygv
<=
sryqmax
;
% Replace missing values by zero (to avoid interpolation errors)
SRLab
{
lab
}(
isnan
(
SRLab
{
lab
}))
=
0
;
SRLab
{
lab
}(
isnan
(
SRLab
{
lab
}))
=
0
;
SRDisp
{
lab
}(
isnan
(
SRDisp
{
lab
}))
=
0
;
SRDisp
{
lab
}(
isnan
(
SRDisp
{
lab
}))
=
0
;
SRCol
{
lab
}(
isnan
(
SRCol
{
lab
}))
=
0
;
SRCol
{
lab
}(
isnan
(
SRCol
{
lab
}))
=
0
;
% Compute super-ray view by view
for
v
=
1
:
numView
for
v
=
1
:
numView
fprintf
(
repmat
(
'\b'
,
1
,
sizeMsg
-
2
));
msg
=
[
'Constructing super-ray '
,
num2str
(
lab
),
'/'
,
num2str
(
numLab
),
...
msg
=
[
'Constructing super-ray '
,
num2str
(
lab
),
'/'
,
num2str
(
numLab
)
...
'\nView '
,
num2str
(
v
),
'/'
,
num2str
(
numView
),
'\n'
];
'\nView '
,
num2str
(
v
),
'/'
,
num2str
(
numView
),
'\n'
];
progress
(
msg
);
sizeMsg
=
numel
(
msg
);
fprintf
(
msg
);
% Compute missing reference data mask
NaNMask
=
~
(
isnan
(
SRX
{
lab
}(:,:,
v
))
|
isnan
(
SRY
{
lab
}(:,:,
v
)));
% Remove missing reference data
SRXSub
=
SRX
{
lab
}(:,:,
v
);
SRXSub
=
reshape
(
SRXSub
(
NaNMask
),[],
1
);
SRYSub
=
SRY
{
lab
}(:,:,
v
);
SRYSub
=
reshape
(
SRYSub
(
NaNMask
),[],
1
);
SRLabSub
=
SRLab
{
lab
}(:,:,
v
);
SRLabSub
=
reshape
(
SRLabSub
(
NaNMask
),[],
1
);
SRDispSub
=
SRDisp
{
lab
}(:,:,
v
);
SRDispSub
=
reshape
(
SRDispSub
(
NaNMask
),[],
1
);
LFLabInt
=
griddata
(
SRYq
{
lab
}(:,:,
v
),
SRXq
{
lab
}(:,:,
v
),
...
% Interpolate label
SRLab
{
lab
}(:,:,
1
,
v
)
,
LF
Y
q
(
xgv
,
ygv
,
v
),
LF
X
q
(
xgv
,
ygv
,
v
),
'nearest'
);
LabInt
=
griddata
(
SRXSub
,
SRYSub
,
SRLabSub
,
LF
X
q
(
xgv
,
ygv
),
LF
Y
q
(
xgv
,
ygv
),
'nearest'
);
LFDispInt
=
griddata
(
SRYq
{
lab
}(:,:,
v
),
SRXq
{
lab
}(:,:,
v
),
...
%Interpolate disparity
SRDisp
{
lab
}(:,:,
1
,
v
)
,
LF
Y
q
(
xgv
,
ygv
,
v
),
LF
X
q
(
xgv
,
ygv
,
v
),
Method
);
DispInt
=
griddata
(
SRXSub
,
SRYSub
,
SRDispSub
,
LF
X
q
(
xgv
,
ygv
),
LF
Y
q
(
xgv
,
ygv
),
Method
);
Mask
=
LFDispInt
>
LFDisp
(
xgv
,
ygv
,
1
,
v
)
&
LFLabInt
==
lab
;
% Combined depth + stencil buffer
Mask
=
DispInt
>
LFDisp
(
xgv
,
ygv
,
1
,
v
)
&
LabInt
==
lab
;
LFLabTemp
=
Label
(
xgv
,
ygv
,
1
,
v
);
% Update light field label
LFLabTemp
(
Mask
)
=
lab
;
LabTemp
=
Label
(
xgv
,
ygv
,
1
,
v
);
Label
(
xgv
,
ygv
,
1
,
v
)
=
LFLabTemp
;
LabTemp
(
Mask
)
=
lab
;
Label
(
xgv
,
ygv
,
1
,
v
)
=
LabTemp
;
LFDispTemp
=
LFDisp
(
xgv
,
ygv
,
1
,
v
);
% Update light field disparity
LFDispTemp
(
Mask
)
=
LFDispInt
(
Mask
);
DispTemp
=
LFDisp
(
xgv
,
ygv
,
1
,
v
);
LFDisp
(
xgv
,
ygv
,
1
,
v
)
=
LFDispTemp
;
DispTemp
(
Mask
)
=
DispInt
(
Mask
);
LFDisp
(
xgv
,
ygv
,
1
,
v
)
=
DispTemp
;
for
c
=
1
:
numChan
for
c
=
1
:
numChan
LFColInt
=
griddata
(
SRYq
{
lab
}(:,:,
v
),
SRXq
{
lab
}(:,:,
v
),
...
% Remove missing reference data
SRCol
{
lab
}(:,:,
c
,
v
),
LFYq
(
xgv
,
ygv
,
v
),
LFXq
(
xgv
,
ygv
,
v
),
Method
);
SRColSub
=
SRCol
{
lab
}(:,:,
c
,
v
);
SRColSub
=
reshape
(
SRColSub
(
NaNMask
),[],
1
);
%Interpolate disparity
LFColInt
=
griddata
(
SRXSub
,
SRYSub
,
SRColSub
,
LFXq
(
xgv
,
ygv
),
LFYq
(
xgv
,
ygv
),
Method
);
% Update light field color
LFColTemp
=
Color
(
xgv
,
ygv
,
c
,
v
);
LFColTemp
=
Color
(
xgv
,
ygv
,
c
,
v
);
LFColTemp
(
Mask
)
=
LFColInt
(
Mask
);
LFColTemp
(
Mask
)
=
LFColInt
(
Mask
);
Color
(
xgv
,
ygv
,
c
,
v
)
=
LFColTemp
;
Color
(
xgv
,
ygv
,
c
,
v
)
=
LFColTemp
;
...
@@ -86,4 +129,13 @@ fprintf('\n\n');
...
@@ -86,4 +129,13 @@ fprintf('\n\n');
LFSet
=
SR
.
FieldsToSet
(
ImgSize
,
ImgRes
,
Offset
,
Color
,
Label
);
LFSet
=
SR
.
FieldsToSet
(
ImgSize
,
ImgRes
,
Offset
,
Color
,
Label
);
function
progress
(
msg
,
varargin
)
persistent
sz
if
isempty
(
sz
);
sz
=
0
;
end
if
nargin
>
1
;
sz
=
varargin
{
1
};
end
fprintf
(
repmat
(
'\b'
,
1
,
sz
));
fprintf
(
msg
);
sz
=
numel
(
msg
)
-
count
(
msg
,
'\n'
);
end
end
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment