From 4ab168b03733e9f9f492cdf0700c92bb0049a59c Mon Sep 17 00:00:00 2001
From: Elian Dib <elian.dib@inria.fr>
Date: Sun, 30 Sep 2018 12:15:39 +0200
Subject: [PATCH] Allow warp functions to send singular values (energy
 compaction)

---
 warpLRA.m       | 5 +++--
 warpLRAUpdate.m | 4 ++--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/warpLRA.m b/warpLRA.m
index 2f02e62..516092d 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 1ba5210..d822649 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{:});
-- 
GitLab