📄 goldsteinunwrap2d.m
字号:
function out=GoldsteinUnwrap2D(IM)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% GoldsteinUnwrap2D implements 2D Goldstein branch cut phase unwrapping algorithm.
%
% References::
% 1. R. M. Goldstein, H. A. Zebken, and C. L. Werner, Satellite radar interferometry:
% Two-dimensional phase unwrapping, Radio Sci., vol. 23, no. 4, pp. 713�720, 1988.
% 2. D. C. Ghiglia and M. D. Pritt, Two-Dimensional Phase Unwrapping:
% Theory, Algorithms and Software. New York: Wiley-Interscience, 1998.
%
% Inputs: 1. Complex image in .mat double format
% 2. Binary mask (optional)
% Outputs: 1. Unwrapped phase image
% 2. Phase quality map
%
% This code can easily be extended for 3D phase unwrapping.
% Posted by Bruce Spottiswoode on 22 December 2008
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Edited by K. Van Caekenberghe on 17/03/2009
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
IM_mask=ones(size(IM)); %Mask (if applicable)
IM_mag=abs(IM); %Magnitude image
IM_phase=angle(IM); %Phase image
%% Set parameters
max_box_radius=4; %Maximum search box radius (pixels)
threshold_std=5; %Number of noise standard deviations used for thresholding the magnitude image
%% Unwrap
residue_charge=PhaseResidues(IM_phase, IM_mask); %Calculate phase residues
branch_cuts=BranchCuts(residue_charge, max_box_radius, IM_mask); %Place branch cuts
[IM_unwrapped, rowref, colref]=FloodFill(IM_phase, branch_cuts, IM_mask); %Flood fill phase unwrapping
tempmin=min(min(IM_unwrapped));
temp=(IM_unwrapped==0);
temp_IM=IM_unwrapped;
temp_IM(temp)=tempmin;
out=temp_IM;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -