Algorithm 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;

我想实现一个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;            
    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是离散运算符