后面会更新c++ 的代码 !
phi = phase_unwrap(psi, weight)
% get the wrapped differences of the wrapped valuesdx = [zeros([size(psi,1),1]), wrapToPi(diff(psi, 1, 2)), zeros([size(psi,1),1])];dy = [zeros([1,size(psi,2)]); wrapToPi(diff(psi, 1, 1)); zeros([1,size(psi,2)])];rho = diff(dx, 1, 2) + diff(dy, 1, 1);% get the result by solving the poisson equationphi = solvePoisson(rho);
计算相位差分:首先计算输入的已包裹相位图psi
沿着水平(x方向)和垂直(y方向)的一阶差分。差分操作通过MATLAB内置的diff
函数实现。这里与边界相关的零填充是为了保持数组的维度不变。dx
计算的是列的差分,dy
计算的是行的差分。
wrapToPi
函数确保差分结果在[-π, π]
区间内包裹。构建泊松方程的源项:通过对dx
和dy
进行差分并叠加形成源项rho
。rho
实质上是从psi
计算出来的离散拉普拉斯算子。解泊松方程&