diff --git a/LFtoSR.m b/LFtoSR.m index 30fbbb271ea6ddcb559a2ffb0e3781b3061566bd..1cc7590a4d6d8df0d10154245c99dfb593bc9d27 100644 --- a/LFtoSR.m +++ b/LFtoSR.m @@ -112,28 +112,41 @@ for lab = 1:numLab LFXsub = LFX(mgv{:},v); LFYsub = LFY(mgv{:},v); + [Xq,Yq,LFXsub,LFYsub] = utils.gridCoords(LFXsub,LFYsub,SRXq,SRYq); + LFXsub = LFXsub(:); LFYsub = LFYsub(:); + M = isnan(Xq)|isnan(Yq); + + Xq(M) = 1; + Yq(M) = 1; + % Interpolate color for c = 1:numChan Colsub = Color(mgv{:},c,v); Colsub = Colsub(:); - SRCol{lab}(:,:,c,v) = griddata(LFXsub,LFYsub,Colsub,SRXq,SRYq,Method); + temp = griddata(LFXsub,LFYsub,Colsub,Xq,Yq,Method); + temp(M) = nan; + SRCol{lab}(:,:,c,v) = temp; end % Interpolate disparity LFDispsub = LFDisp(mgv{:},v); LFDispsub = LFDispsub(:); - SRDisp{lab}(:,:,1,v) = griddata(LFXsub,LFYsub,LFDispsub,SRXq,SRYq,Method); + temp = griddata(LFXsub,LFYsub,LFDispsub,Xq,Yq,Method); + temp(M) = nan; + SRDisp{lab}(:,:,1,v) = temp; % Interpolate label Labelsub = Label(mgv{:},v); Labelsub = Labelsub(:); - Lab = griddata(LFXsub,LFYsub,Labelsub,SRXq,SRYq,'nearest'); + temp = griddata(LFXsub,LFYsub,Labelsub,Xq,Yq,'nearest'); + temp(M) = nan; + Lab = temp; % Replace out of boundary values in label using cubic interpolation - NaNLab = isnan(griddata(LFXsub,LFYsub,Labelsub,SRXq,SRYq,'cubic')); + NaNLab = isnan(griddata(LFXsub,LFYsub,Labelsub,Xq,Yq,'cubic')); Lab(NaNLab) = nan; SRLab{lab}(:,:,1,v) = Lab; end