Halcom 发表于 2017-3-19 21:19:08

中值滤波

function b = med_filt2(a,mn)
% 中值滤波
% 输入:
%      a:输入二维图像局长呢
%      mn:为滤波模板
% 输出:
%      b:中值滤波图像

domain = ones(mn);          % 模板
if (rem(prod(mn), 2) == 1)
    order = (prod(mn)+1)/2; % 中值
    b = ordfilt2(a, order, domain, 'zeros'); % 排序滤波
else
    order1 = prod(mn)/2;
    order2 = order1+1;
    b = ordfilt2(a, order1, domain, 'zeros');% 排序滤波
    b2 = ordfilt2(a, order2, domain, 'zeros'); % 排序滤波
        if islogical(b)% 逻辑运算
                b = b | b2;% 或运算
        else
                b =        imlincomb(0.5, b, 0.5, b2); % 0.5*b + 0.5*b2
        end
end


页: [1]
查看完整版本: 中值滤波