一、算法原理
1、横向剪切最小二乘
2、参考文献
[1]钱晓凡,李斌,李兴华,等. 横向剪切最小二乘相位解包裹算法的改进 [J]. 中国激光, 2012, 39 (11): 198-202.
二、代码实现
clc;
clear;
close all;
%% ----------------------------生成模拟曲面--------------------------------
x = linspace(-2,2,40); % 设置范围与步长
y = linspace(-2,2,40);
[X, Y] = meshgrid(x,y);
Z = X.*X+Y.*Y;
% 绘图
figure
surf(X,Y,Z),xlabel('x'),ylabel('y'),zlabel('z');
title('三维曲面');
colormap spring;
hold on;
%% ----------------------转复数图像并获取缠绕相位--------------------------
exp_data = exp(1i*Z);
phase = angle(exp_data);
% 绘图
figure
surf(X,Y,phase),xlabel('x'),ylabel('y'),zlabel('z');
title('缠绕相位三维显示');
colormap(autumn(5))
hold on;
% 显示复数图像相位
figure
imagesc(phase);% 相位图
colorbar;
title('缠绕相位二维显示');
hold on;
%% -----------------------------相位解缠-----------------------------------
phs = leastSquareUnwrap_LS(phase); % 横向剪切最小二乘相位解缠算法已封装,这里直接调用即可!!!
% 绘图
figure
surf(X,Y,phs),xlabel('x'),ylabel('y'),zlabel('z');
title('横向剪切最小二乘法相位解缠结果');
colormap jet;
hold on;