从头开始在 MATLAB 中实现高斯模糊内核

问题描述

我最近在 MATLAB 中实现了一个盒式平均滤波器。我发现这是一个有趣的练习。我想用高斯模糊滤镜做同样的事情,以最终解决一些超分辨率问题。但我发现这更具挑战性。关于这个话题,这里有几个问题。这些主题中的所有答案都非常有帮助。但是,我一直无法成功创建内核。目前我的代码只是实现了一个平均滤波器。高斯模糊的 Wiki 页面https://en.wikipedia.org/wiki/Gaussian_blur

这是我的代码

function out_im = GaussianBlur(in_im,sigma,N) %input image,Number of iterations

[rows,cols] = size(in_im);
orig_im = in_im;
Filter = zeros(rows,cols);
w2 = 0;

for k = 1 : N
    
    for LR_ROWS = 2 : 1 : rows - 1
        for LR_COLS = 2 : 1 : cols -1
            
            for i = -1 : 1
                for j = -1 : 1
                    w1 = exp(-(orig_im(LR_ROWS,LR_COLS).^2/(2*sigma^2)));
                    w2 = w2 + w1;
                    Filter(LR_ROWS,LR_COLS) = Filter(LR_ROWS,LR_COLS) + ...
                        w1*orig_im(LR_ROWS+i,LR_COLS+j);
                end
            end
            
            Filter(LR_ROWS,LR_COLS)./w2;
            w2 = 0;
        end
    end

    orig_im = Filter;
    Filter = zeros(rows,cols);
    
end

    out_im = orig_im;
end

非常感谢任何建议或建议!谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)