algorithm - 在matlab中实现Chambolle对偶公式法

标签 algorithm matlab image-processing optimization computer-vision

我想实现 Chambolle 双重配方方法。该方法可以总结如下 enter image description here

这是我在 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 使用后向差异。在 Toolbox image 中查看 div 和 grad 的实现.

关于algorithm - 在matlab中实现Chambolle对偶公式法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31345644/

相关文章:

algorithm - 将 RGB channel 转换为整数比率

matlab - 如何生成n个点并限制它们之间的距离大于给定值?

python - 相当于 NumPy 中的 "whos"命令

c++ - opencv:在矩形检测中使用轮廓和霍夫变换

n 位矩阵的算法

c# - Enumerable.Single 的错误执行?

user-interface - 使用一行代码在 MATLAB 中返回弹出菜单选择

c - 在linux中使用c库进行人脸识别

android - android-gpuimage 中 View 的旋转

javascript - 这个算法的正式名称是什么?