function [I,R]=intrinsicScene_color_L1(src,depth_data, normal_data, shadowmask, param) addpath('./utils/matlab'); addpath('./utils/npy-matlab/npy-matlab'); nn_num_s = 20; if param.NonLocal lambda_Ns = 0.005; else lambda_Ns = 0; end if param.Intensity lambda_a=0.02; else lambda_a = 0; end if param.Data lambda = 0.3; else lambda = 1; end lambda_r=0.005; vareps=0.01; K=20; [h, w,~] = size(src); point = get_pointcloud(depth_data); lambda(lambda<0)=0; S_hat = shadowmask; if param.HalfSest S_hat = ones(h,w,3).*0.5; end if param.ISest S_hat = repmat(im2gray(src),[1 1 3]); end I=ones(size(src)); R=src./I; Ns = NonLocalConstraint_KNN(src,normal_data,point,nn_num_s,shadowmask); for iter=1:K preI=I; preR=R; %% update reflectance R=src./(I+1e-3); R=L0Smoothing(R,lambda_r); R(R>1)=1; R(R<0)=0; eplisonR=norm(R-preR,'fro')/norm(preR,'fro'); %% update illuination Ir=solveLinearSystem(src(:,:,1),R(:,:,1),Ns,S_hat(:,:,1),lambda_Ns,lambda_a,lambda); Ig=solveLinearSystem(src(:,:,2),R(:,:,2),Ns,S_hat(:,:,2),lambda_Ns,lambda_a,lambda); Ib=solveLinearSystem(src(:,:,3),R(:,:,3),Ns,S_hat(:,:,3),lambda_Ns,lambda_a,lambda); I = cat(3,Ir,Ig,Ib); I = max(I,src); I(I>1)=1; eplisonI=norm(I-preI,'fro')/norm(preI,'fro'); if(iter > 2 && (eplisonI1 Denormin2 = repmat(Denormin2,[1,1,D]); end beta = 2*lambda; while beta < betamax Denormin = 1 + beta.*Denormin2; % h-v subproblem h = [diff(S,1,2), S(:,1,:) - S(:,end,:)]; v = [diff(S,1,1); S(1,:,:) - S(end,:,:)]; if D==1 t = (h.^2+v.^2)