diff --git a/warpLRA.m b/warpLRA.m index 2f02e629dd1fe95105872fdee07249b6a5270516..516092d961aa8a1503f228e9473aa60d11f0c290 100644 --- a/warpLRA.m +++ b/warpLRA.m @@ -1,5 +1,5 @@ function [PSNRin,PSNRout,M,MMask,MPos,MDispX,MDispY,... - projM,projValue,projMask,projPos,projDispX,projDispY]... + projM,projValue,projMask,projPos,projDispX,projDispY,S]... = warpLRA(Value,Mask,Pos,DispX,DispY,k,varargin) %WARPLRA Warping low rank approximation % Compute disparity update that best matches low-rank approximation @@ -40,7 +40,8 @@ projValue(~projMask) = nan; projValue = SR.complete(projValue,'rank'); %% Compute low-rank approximation -[B,C] = SR.factorize(projValue); +[B,C,~,S,~] = SR.factorize(projValue); +S = diag(S); BMat = LF.LFToMat(B); MMat = BMat(:,1:k)*C(1:k,:); diff --git a/warpLRAUpdate.m b/warpLRAUpdate.m index 1ba52103215d882a3458b3f0f616775c94b570dd..d822649b6d0db9f502629e0db8893a01ece7e257 100644 --- a/warpLRAUpdate.m +++ b/warpLRAUpdate.m @@ -1,11 +1,11 @@ function [dX,dY,PSNRin,PSNRout,M,MMask,MPos,MDispX,MDispY,... - projM,projValue,projMask,projPos,projDispX,projDispY] = ... + projM,projValue,projMask,projPos,projDispX,projDispY,S] = ... warpLRAUpdate(Value,Mask,Pos,DispX,DispY,k,varargin) %WARPLRAUPDATE warping + low rank approximation + update % Compute update that best matches low-rank approximation [PSNRin,PSNRout,M,MMask,MPos,MDispX,MDispY,... - projM,projValue,projMask,projPos,projDispX,projDispY]... + projM,projValue,projMask,projPos,projDispX,projDispY,S]... = SR.warpLRA(Value,Mask,Pos,DispX,DispY,k,varargin{:}); [dX,dY] = SR.pinvUpdate(projValue,projMask,projM,varargin{:});