• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: Matlab
  • 标签: matlab  filter  picture  

资源简介

基于matlab实现的非局部均值滤波器,基于matlab实现的非局部均值滤波器

资源截图

代码片段和文件信息

function DeNimg = Non_Local_Means(NimgPSHWSHSigma)
% Non_Local_Means滤波器
%函数输入: 
%         Nimg:  输入的图像矩阵 + 带噪声的
%         PSH:  扩展窗尺寸大小
%         WSH: 窗尺寸大小
%         Sigma:方差
%函数输出: 
%         DeNimg: 重构滤波图像

if ~isa(Nimg‘double‘)
    Nimg = double(Nimg)/255;
end

% 图像维数
[HeightWidth] = size(Nimg);
u = zeros(HeightWidth); % 初始化去噪图像矩阵
M = u; % 初始化权值矩阵
Z = M; % 初始化叠加权值 accumlated weights
% 避免边界效应
PP = padarray(Nimg[PSHPSH]‘symmetric‘‘both‘);
PW = padarray(Nimg[WSHWSH]‘symmetric‘‘both‘);
% padarray使用
% A =
%      1     3     4
%      2     3     4
%      3     4     5
% B = padarray(A 2 * [1 1] 0 ‘both‘)
%      0     0     0     0     0     0     0
%      0     0     0     0     0     0     0
%      0     0     1     3     4     0     0
%      0     0     2     3     4     0     0
%      0     0     3     4     5     0     0
%      0     0     0     0     0     0     0
%      0     0     0     0     0     0     0
% 主循环
for dx = -WSH:WSH
    for dy = -WSH:WSH
        if dx ~= 0 || dy ~= 0
            Sd = integral_img(PPdxdy);  % 插值图像
            % 获取对应像素点的平方差矩阵
            SDist = Sd(PSH+1:end-PSHPSH+1:end-PSH)+Sd(1:end-2*PSH

评论

共有 条评论