Mentions légales du service

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

Modified function for color light fields

parent bcbfa6d0
No related branches found
No related tags found
No related merge requests found
......@@ -6,14 +6,13 @@ function [Ref,Rec] = align(Ref,Rec)
[OffRec,ColRec,LabRec] = SR.SetToFields(Rec);
numLab = numel(LabRef);
filter = logical([1,1,1,0,0]);
for lab = 1:numLab
LabRef{lab}(LabRef{lab}==0) = nan;
LabRec{lab}(LabRec{lab}==0) = nan;
[Cols,Offs,Labs] = utils.align({ColRef{lab},ColRec{lab}},...
{OffRef{lab},OffRec{lab}},filter,{LabRef{lab},LabRec{lab}});
{OffRef{lab},OffRec{lab}},{LabRef{lab},LabRec{lab}});
[ColRef{lab},ColRec{lab}] = deal(Cols{:});
[OffRef{lab},OffRec{lab}] = deal(Offs{:});
......
......@@ -2,27 +2,25 @@ function [Ref,Value,Mask] = complete(Ref,method,varargin)
%COMPLETESET Summary of this function goes here
% Detailed explanation goes here
[Offset,Color,Label] = SR.SetToFields(Ref);
[Offset,Color] = SR.SetToFields(Ref);
Size = cellfun(@size,Color,'UniformOutput',false);
[ImgSize,ImgRes] = cellfun(@(x) deal(x(1:3),x(4:end)),Size,'UniformOutput',false);
RefSize = size(Ref);
numLab = numel(Label);
numLab = numel(Color);
for lab = 1:numLab
Color{lab} = reshape(Color{lab},prod(ImgSize{lab}),prod(ImgRes{lab}));
Label{lab} = reshape(Label{lab},prod(ImgSize{lab}),prod(ImgRes{lab}));
Color{lab}(~(Label{lab}==lab)) = nan;
Color{lab} = reshape(Color{lab},prod(ImgSize{lab}),[]);
end
switch method
case 'global'
Value = {Set2Matrix(Color)};
Mask = {Set2Matrix(Label)};
case 'local'
Value = Color;
Mask = Label;
end
Mask = Value;
for it = 1:numel(Value)
[Value{it},Mask{it}] = utils.complete(Value{it},varargin{:});
end
......@@ -37,10 +35,10 @@ switch method
end
for lab = 1:numLab
Color{lab} = reshape(Color{lab},[ImgSize{lab},ImgRes{lab}]);
Label{lab} = reshape(Label{lab},[ImgSize{lab},ImgRes{lab}]);
Color{lab}(~Label{lab}) = nan;
Label{lab} = lab*double(Label{lab});
Color{lab} = reshape(Color{lab},[ImgSize{lab},ImgRes{lab}]);
Label{lab} = lab*double(any(Label{lab},3));
end
Color = reshape(Color,RefSize);
......@@ -52,7 +50,7 @@ Ref = SR.FieldsToSet(Offset,Color,Label);
function Matrix = Set2Matrix(Set)
Matrix = cell2mat(reshape(Set,[],1));
end
function Set = Matrix2Set(Matrix,ImgSize,ImgRes)
for iter = 1:numel(ImgSize)
ImgSize{iter} = prod(ImgSize{iter});
......
......@@ -3,17 +3,27 @@ function Ref = completeOriginal(Ref)
% Detailed explanation goes here
[Offset,Color,Label] = SR.SetToFields(Ref);
Size = cellfun(@size,Color,'UniformOutput',false);
[ImgSize,ImgRes] = cellfun(@(x) deal(x(1:3),x(4:end)),Size,'UniformOutput',false);
numLab = numel(Label);
for lab = 1:numLab
Label{lab} = reshape(Label{lab},prod(ImgSize{lab}),prod(ImgRes{lab}));
Label{lab} = repmat(any(Label{lab}==lab,2),1,size(Label{lab},2));
Label{lab} = lab*double(Label{lab});
Label{lab} = reshape(Label{lab},[ImgSize{lab},ImgRes{lab}]);
Color{lab}(Label{lab}~=lab) = nan;
LFSize = size(Color{lab});
ImgSize = LFSize(1:2);
ImgRes = LFSize(4:end);
ImgSizeC = num2cell(ImgSize);
ImgResC = num2cell(ImgRes);
Label{lab} = reshape(Label{lab},prod(ImgSize),[]);
Color{lab} = reshape(Color{lab},prod(ImgSize),[]);
M = any(Label{lab}==lab,2);
Label{lab}( M,:) = lab;
Label{lab}(~M,:) = 0;
Color{lab}(~M,:) = nan;
Label{lab} = reshape(Label{lab},ImgSizeC{:},[],ImgResC{:});
Color{lab} = reshape(Color{lab},ImgSizeC{:},[],ImgResC{:});
end
Ref = SR.FieldsToSet(Offset,Color,Label);
......
......@@ -9,6 +9,7 @@ RefSize = size(Ref);
numLab = numel(Label);
for lab = 1:numLab
Label{lab} = Label{lab}.*ones(Size{lab});
Color{lab} = reshape(Color{lab},prod(ImgSize{lab}),prod(ImgRes{lab}));
Label{lab} = reshape(Label{lab},prod(ImgSize{lab}),prod(ImgRes{lab}));
Color{lab}(~(Label{lab}==lab)) = nan;
......@@ -39,7 +40,7 @@ end
for lab = 1:numLab
Color{lab} = reshape(Color{lab},[ImgSize{lab},ImgRes{lab}]);
Label{lab} = lab.*double(~isnan(Color{lab}));
Label{lab} = lab*double(any(~isnan(Color{lab}),3));
end
Color = reshape(Color,RefSize);
......
......@@ -14,20 +14,19 @@ elseif isempty(VisSet)
end
numLab = numel(LabVis);
filter = logical([1,1,1,0,0]);
for lab = 1:numLab
LabVis{lab}(LabVis{lab}==0) = nan;
LabOcc{lab}(LabOcc{lab}==0) = nan;
[Cols,Offs,Labs] = utils.align({ColVis{lab},ColOcc{lab}},...
{OffVis{lab},OffOcc{lab}},filter,{LabVis{lab},LabOcc{lab}});
{OffVis{lab},OffOcc{lab}},{LabVis{lab},LabOcc{lab}});
for it = 1:numel(Labs)
Labs{it} = it.*double(Labs{it}==lab);
end
[ColVis{lab},LabVis{lab},OffVis{lab}] = utils.join(Cols,Labs,Offs);
[LabVis{lab},OffVis{lab},ColVis{lab}] = utils.join(Labs,Offs,Cols);
LabVis{lab} = lab.*double(LabVis{lab}~=0);
end
......
......@@ -17,6 +17,7 @@ LFDisp(isnan(LFDisp))=0;
% Compute projected coordinates of reference samples
gv = arrayfun(@(x) 1:x,LFSize,'UniformOutput',false);
gv{3} = 1;
ugv = reshape(gv{4},1,1,1,[],1);
vgv = reshape(gv{5},1,1,1,1,[]);
ugv = ugv-centerView(1);
......
......@@ -4,7 +4,7 @@ function Ref = join(Ref)
[Offset,Color,Label] = SR.SetToFields(Ref);
[Color,Label,Offset] = utils.join(Color,Label,Offset);
[Label,Offset,Color] = utils.join(Label,Offset,Color);
Ref = SR.FieldsToSet(Offset,Color,Label);
......
......@@ -14,20 +14,18 @@ for lab = 1:numLab
SizeRef = size(ColorRef{lab});
SizeRef(end+1:5) = 1;
ImgSizeRef = SizeRef(1:3);
ImgResRef = SizeRef(4:end);
ColorRef{lab} = reshape(ColorRef{lab},prod(ImgSizeRef),prod(ImgResRef));
LabelRef{lab} = reshape(LabelRef{lab},prod(ImgSizeRef),prod(ImgResRef));
ColorRef{lab}(~( LabelRef{lab}==lab)) = 0;
M = (LabelRef{lab}~=lab) & true(SizeRef);
ColorRef{lab}(M) = 0;
ColorRef{lab} = reshape(ColorRef{lab},prod(ImgSizeRef),[]);
SizeRec = size(ColorRec{lab});
SizeRec(end+1:5) = 1;
ImgSizeRec = SizeRec(1:3);
ImgResRec = SizeRec(4:end);
ColorRec{lab} = reshape(ColorRec{lab},prod(ImgSizeRec),prod(ImgResRec));
LabelRec{lab} = reshape(LabelRec{lab},prod(ImgSizeRec),prod(ImgResRec));
ColorRec{lab}(~(LabelRec{lab}==lab)) = 0;
M = (LabelRec{lab}~=lab) & true(SizeRec);
ColorRec{lab}(M) = 0;
ColorRec{lab} = reshape(ColorRec{lab},prod(ImgSizeRec),[]);
end
switch method
......
......@@ -3,20 +3,25 @@ function [VisRef,OccRef] = separate(Ref,Mask)
% Detailed explanation goes here
[Offset,ColVis,LabVis] = SR.SetToFields(Ref);
numLab = numel(LabVis);
numLab = numel(Ref);
ColOcc = ColVis;
LabOcc = LabVis;
for lab = 1:numLab
LabOcc{lab} = LabVis{lab}==lab & ~Mask{lab};
LabVis{lab} = LabVis{lab}==lab & Mask{lab};
MVis = LabVis{lab}==lab & Mask{lab};
MOcc = LabOcc{lab}==lab & ~Mask{lab};
ColVis {lab}( ~LabVis{lab}) = nan;
ColOcc {lab}(~~LabVis{lab}) = nan;
LabVis{lab}( MVis) = lab;
LabVis{lab}(~MVis) = 0;
LabOcc{lab}( MOcc) = lab;
LabOcc{lab}(~MOcc) = 0;
LabVis{lab} = lab*double(LabVis{lab});
LabOcc{lab} = lab*double(LabOcc{lab});
MVis = MVis & true(size(ColVis{lab}));
MOcc = MOcc & true(size(ColOcc{lab}));
ColVis{lab}(~MVis) = nan;
ColOcc{lab}(~MOcc) = nan;
end
VisRef = SR.FieldsToSet(Offset,ColVis,LabVis);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment