Algorithm Chambolle对偶公式法在matlab中的实现
我想实现一个Chambolle对偶公式方法。该方法可概括如下 这是我在matlab中的实现。然而,它并没有给出真正的结果。你能看看吗?请给我一些关于代码的评论/建议Algorithm Chambolle对偶公式法在matlab中的实现,algorithm,matlab,image-processing,optimization,computer-vision,Algorithm,Matlab,Image Processing,Optimization,Computer Vision,我想实现一个Chambolle对偶公式方法。该方法可概括如下 这是我在matlab中的实现。然而,它并没有给出真正的结果。你能看看吗?请给我一些关于代码的评论/建议 %% Note that div, grad is written correctly. d is given u=rand(row,col,dim); a=sum(u,3); N=2; for k = 1 : N u(:,:,k)=u(:,:,k)./a;
%% Note that div, grad is written correctly. d is given
u=rand(row,col,dim);
a=sum(u,3);
N=2;
for k = 1 : N
u(:,:,k)=u(:,:,k)./a;
end
v=zeros(size(I)); %I is image
for i=1: numIter
for ii=1:N
grad_E = d(:,:,ii);
% solve for u
p1 = zeros([size(u(:,:,1)) N]);
p2 = zeros([size(u(:,:,1)) N]);
for j = 1:5
%% Compute Eq 24
[d1 d2] = grad(div(p1(:,:,ii),p2(:,:,ii))-u(:,:,ii)/(theta*gamma));
Nu = 1+tau*sqrt(d1.^2+d2.^2);
p1(:,:,ii) = (p1(:,:,ii) + tau*d1)./Nu;
p2(:,:,ii) = (p2(:,:,ii) + tau*d2)./Nu;
end % end of inner iteration
v = u(:,:,ii) - theta*gamma*div(p1(:,:,ii),p2(:,:,ii)); %% Eq 23
% solve for v
u(:,:,ii) = min(max(((v-theta*gamma*grad_E-theta*lambda*gamma*(sum(u(:,:,1:size(u,3) ~= ii),3)-1))...
./(1+theta*gamma)),0),1); % Eq 25
end
end
您可能没有正确实现div和grad。它们需要是互补的,例如,对grad使用正向差分,对div使用反向差分。请参阅中的div和grad的实现。您有关于此方法的参考PDF/link/教科书吗?我认为我的div和grad没有问题。它们应用于服务器纸张/代码中。我的问题可能是等式25。我认为这是不正确的。请注意,我的div和grad是离散运算符