资源简介

InSar干涉相位滤波算法MATLAB实现(均值、中值、圆周期),可直接执行,附带测试数据

资源截图

代码片段和文件信息

%yangzhen
%2019.4.29
%%
clear;
clc;
load ‘data.dat‘
%%
%定义点好看的颜色
icolormap = jet(64);
icolormap = icolormap(13:56 :);
%%
%综合测试所有滤波方法
pho1 = data;
pho2 = mean_fiter(data 9);
pho3 = mid_fiter(data 9);
pho4 = ciciod_fiter(data 9);
%可视化
figure(‘color‘ [111]);
ititle = {‘原图‘ ‘均值滤波‘ ‘中值滤波‘ ‘圆周期滤波‘};
for i=1:4
    subplot(2 2 i);
    colormap(icolormap);
    imagesc( eval([‘pho‘ num2str(i)]) );
    title(ititle{i});
    colorbar;
end
suptitle(‘滤波窗口大小为9*9‘);
%%
function result = mean_fiter(data winsize)
[irow icol] = size(data);
mid = floor(winsize/2);
result = zeros(irow icol);
data_exp = exp(1i*data);
for i=mid+1:irow-mid
for j=mid+1:icol-mid
tempmat = data_exp(i-mid:i+mid j-mid:j+mid);
result(i j) = angle( sum(tempmat(:)) );
end
end
end
%%
function result =  mid_fiter(data winsize)
[irow icol] = size(data);
mid = floor(winsize/2);
result = zeros(irow icol);
data_sin = sin(data);
data_cos = cos(data);
for i=mid+1:irow-mid
for j=mid+1:icol-mid
mat_sin = data_sin(i-mid:i+mid j-mid:j+mid);
mat_cos = data_cos(i-mid:i+mid j-mid:j+mid);
result(i j) = angle( median(mat_cos(:))+median(1i*mat_sin(:)) );
    end
end
end
%%
function result = ciciod_fiter(data winsize)
[irow icol] = size(data);
mid = floor(winsize/2);
result = zeros(irow icol);
data_exp = exp(1i*data);
for i=mid+1:irow-mid
for j=mid+1:icol-mid
mat_exp = data_exp(i-mid:i+mid j-mid:j+mid);
sum_exp = sum(mat_exp(:));
mean_argexp = mean2( angle(mat_exp/sum_exp) );
result(i j) = mean_argexp+angle(sum_exp);
end
end
result = rem(result+11*pi 2*pi)-pi;
end
%%

评论

共有 条评论