干涉相位滤波均值、中值、圆周期.7z


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
%%

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)