资源简介

ROF去噪,图像处理,matlab源码 包含文献

资源截图

代码片段和文件信息

%% ROFdenoise
%
%  This denoising method is based on total-variation originally proposed by
%  Rudin Osher and Fatemi. In this particular case fixed point iteration
%  is utilized.
%
%  For the included image a fairly good result is obtained by using a
%  theta value around 12-16. A possible addition would be to analyze the
%  residual with an entropy function and add back areas that have a lower
%  entropy i.e. there are some correlation between the surrounding pixels.

%  Philippe Magiera & Carl L鰊dahl 2008
%

function A = ROFdenoise(Image Theta)

[Image_h Image_w] = size(Image); 
g = 1; dt = 1/4; nbrOfIterations = 5;
Image = double(Image);

p = zeros(Image_hImage_w2);
d = zeros(Image_hImage_w2);
div_p = zeros(Image_hImage_w);

for i = 1:nbrOfIterations
    for x = 1:Image_w
        for y = 2:Image_h-1
            div_p(yx) = p(yx1) - p(y-1x1);
        end
    end

    for x = 2:Image_w-1
        for y = 1:Image_h
            div_p(yx) = div_p(yx) + p(yx2) - p(yx-12);
        end
    end
    
    % Handle boundaries
    div_p(:1) = p(:12);
    div_p(:Image_w) = -p(:Image_w-12);
    div_p(1:) = p(1:1);
    div_p(Image_h:) = -p(Image_h-1:1);

    % Update u
    u = Image-Theta*div_p;

    % Calculate forward derivatives
    du(::2) = u(:[2:Image_w Image_w])-u;
    du(::1) = u([2:Image_h Image_h]:)-u;

    % Iterate
    d(::1) = (1+(dt/Theta/g).*abs(sqrt(du(::1).^2+du(::2).^2)));
    d(::2) = (1+(dt/Theta/g).*abs(sqrt(du(::1).^2+du(::2).^2)));
    p = (p-(dt/Theta).*du)./d;
    
end

A = u;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件      182633  2008-12-11 22:35  noisy.jpg
     目录           0  2008-12-11 23:25  __MACOSX\
     文件          82  2008-12-11 22:35  __MACOSX\._noisy.jpg
     文件        1571  2008-12-11 23:24  ROFdenoise.m
     文件          82  2008-12-11 23:24  __MACOSX\._ROFdenoise.m

评论

共有 条评论