⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 im_mean_var.m

📁 SAR图像三种滤波方法: 1、gamma_MAP滤波; 2、均方差滤波: 3、Lee滤波
💻 M
字号:
function [im_Mean, im_Var] = im_mean_var(im, w_size, out_size, bound, flag)
%Input:
    %im: 待求的影像,或者矩阵
    %w_size: 窗口的大小,如5代表5*5的窗口
    %out_size:输出图像的大小,可以是'same'或者'full'
    %bound: 边缘的扩展模式,分为'symmetric','replicate','circular'。
    %flag:计算时是否包含中心像素,0为不包含,1为包含。
%Output:
    %im_Mean:均值影像/矩阵
    %im_Var:方差影像/矩阵
    

%-----------------------------------求均值-----------------------------------
%--均值滤波器--
h = ones(w_size);
h_size=w_size^2;
if flag == 0
    h((w_size+1)/2,(w_size+1)/2) = 0;
    h_size = h_size - 1;
end

h = h ./ h_size;
%--均值滤波器求毕--

im_Mean = imfilter(im, h, bound, out_size);
%--------------------------------------均值求毕------------------------------


%-----------------------------------求方差-----------------------------------
im_Var = zeros(size(im));
%将原始矩阵按照bound的模式进行边缘扩展
im_pad = padarray(im, [(w_size-1)/2 (w_size-1)/2], bound);

imsize = size(im_pad);
row=imsize(1);
col=imsize(2);

tmp = (w_size-1)/2;
for i=1:1:row-tmp*2
    for j=1:1:col-tmp*2
        im_sub = imcrop(im_pad, [i, j, w_size-1, w_size-1]);%取小窗口
        m2v=im_sub(:);
        if(flag == 1)%如果包含中间点
            im_Var(j,i) = var(m2v,1);%不是无偏估计(N-1),而是用N
        else%如果不包含中间点
            tt = zeros(w_size^2-1 , 1);
            tt(1:(w_size^2-1)/2) = m2v(1:(w_size^2-1)/2);
            tt((w_size^2-1)/2+1:end) = m2v((w_size^2-1)/2+2:end);
            im_Var(j,i) = var(tt,1);
        end
            
    end
end

%----------------------------------方差求毕----------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -