横向剪切最小二乘相位解包裹算法----MATLAB实现
2018-01-15 11:15
471 查看
%% ************************************
% 作者:James_Ray_Murphy
% *******************************************
clear all
close all
clc
%% *************初始相位**************
N = 512;
G = 10;
phi0 = peaks(N)*G; %模拟初始相位
figure(1)
surf(phi0,'FaceColor','interp', 'EdgeColor','none','FaceLighting','phong');
camlight left, axis tight
xlabel('X/Pixels','FontSize',14);ylabel('Y/Pixels','FontSize',14);zlabel('Phase/Radians','FontSize',14);%title('Initial Phase','FontSize',14)
set(figure(1),'name','Initial Phase 3D','Numbertitle','off');
phi = angle(exp(j*phi0)); %包裹相位
figure(2);
imshow(phi,[]);
xlabel('X/Pixels','FontSize',14);ylabel('Y/Pixels','FontSize',14);%title('Wrapped Phase','FontSize',14)
set(figure(2),'name','Wrapped Phase','Numbertitle','off');
axis on
%% *************相位解包裹**************
%********************对包裹相位求一阶偏微分**************
[m,n] = size(phi);
phidx = zeros(m,n);
phidy = zeros(m,n);
phidx(1:m-1,:) = angle(exp(j*(phi(2:m,:)-phi(1:m-1,:))));
phidy(:,1:n-1) = angle(exp(j*(phi(:,2:n)-phi(:,1:n-1))));
%********************对包裹相位求二阶偏微分**************
Rou3 = zeros(m,n);
Rou3dx = zeros(m,n);
Rou3dy = zeros(m,n);
Rou3dx(1:m-1,:) = angle(exp(j*(phidx(2:m,:)-phidx(1:m-1,:))));
Rou3dy(:,1:n-1) = angle(exp(j*(phidy(:,2:n)-phidy(:,1:n-1))));
Rou3 = Rou3dx + Rou3dy;
figure(3);
surf(Rou3,'FaceColor','interp', 'EdgeColor','none','FaceLighting','phong');
camlight left, axis tight
xlabel('X/Pixels','FontSize',14);ylabel('Y/Pixels','FontSize',14);zlabel('Phase/Radians','FontSize',14);%title('lou3','FontSize',14)
set(figure(3),'name','R(x,y) 3D','Numbertitle','off');
figure(4);
imshow(Rou3,[]);
xlabel('X/Pixels','FontSize',14);ylabel('Y/Pixels','FontSize',14);
set(figure(4),'name','R(x,y) 2D','Numbertitle','off');
%***********************DCT求解泊松方程**
4000
******************
tic
PP3 = dct2(Rou3);
for ii=1:m
for jj=1:n
k1=2*cos((ii-1)*pi/(m));
k2=2*cos((jj-1)*pi/(n));
KK = k1+k2-4;
PH3(ii,jj) = PP3(ii,jj)/KK;
end
end
PH3(1,1) = -(PH3(1,2) + PH3(2,1) - PP3(1,1))/2;
phi33 = idct2(PH3);
toc
phi33 = phi33(1:m,1:n);
figure(5);
surf(phi33,'FaceColor','interp', 'EdgeColor','none','FaceLighting','phong');
camlight left, axis tight
xlabel('X/Pixels','FontSize',14);ylabel('Y/Pixels','FontSize',14);zlabel('Phase/Radians','FontSize',14);%title('LSBLS Phase Unwrapping','FontSize',14)
set(figure(5),'name','LSBLS Phase Unwrapping','Numbertitle','off');
% 作者:James_Ray_Murphy
% *******************************************
clear all
close all
clc
%% *************初始相位**************
N = 512;
G = 10;
phi0 = peaks(N)*G; %模拟初始相位
figure(1)
surf(phi0,'FaceColor','interp', 'EdgeColor','none','FaceLighting','phong');
camlight left, axis tight
xlabel('X/Pixels','FontSize',14);ylabel('Y/Pixels','FontSize',14);zlabel('Phase/Radians','FontSize',14);%title('Initial Phase','FontSize',14)
set(figure(1),'name','Initial Phase 3D','Numbertitle','off');
phi = angle(exp(j*phi0)); %包裹相位
figure(2);
imshow(phi,[]);
xlabel('X/Pixels','FontSize',14);ylabel('Y/Pixels','FontSize',14);%title('Wrapped Phase','FontSize',14)
set(figure(2),'name','Wrapped Phase','Numbertitle','off');
axis on
%% *************相位解包裹**************
%********************对包裹相位求一阶偏微分**************
[m,n] = size(phi);
phidx = zeros(m,n);
phidy = zeros(m,n);
phidx(1:m-1,:) = angle(exp(j*(phi(2:m,:)-phi(1:m-1,:))));
phidy(:,1:n-1) = angle(exp(j*(phi(:,2:n)-phi(:,1:n-1))));
%********************对包裹相位求二阶偏微分**************
Rou3 = zeros(m,n);
Rou3dx = zeros(m,n);
Rou3dy = zeros(m,n);
Rou3dx(1:m-1,:) = angle(exp(j*(phidx(2:m,:)-phidx(1:m-1,:))));
Rou3dy(:,1:n-1) = angle(exp(j*(phidy(:,2:n)-phidy(:,1:n-1))));
Rou3 = Rou3dx + Rou3dy;
figure(3);
surf(Rou3,'FaceColor','interp', 'EdgeColor','none','FaceLighting','phong');
camlight left, axis tight
xlabel('X/Pixels','FontSize',14);ylabel('Y/Pixels','FontSize',14);zlabel('Phase/Radians','FontSize',14);%title('lou3','FontSize',14)
set(figure(3),'name','R(x,y) 3D','Numbertitle','off');
figure(4);
imshow(Rou3,[]);
xlabel('X/Pixels','FontSize',14);ylabel('Y/Pixels','FontSize',14);
set(figure(4),'name','R(x,y) 2D','Numbertitle','off');
%***********************DCT求解泊松方程**
4000
******************
tic
PP3 = dct2(Rou3);
for ii=1:m
for jj=1:n
k1=2*cos((ii-1)*pi/(m));
k2=2*cos((jj-1)*pi/(n));
KK = k1+k2-4;
PH3(ii,jj) = PP3(ii,jj)/KK;
end
end
PH3(1,1) = -(PH3(1,2) + PH3(2,1) - PP3(1,1))/2;
phi33 = idct2(PH3);
toc
phi33 = phi33(1:m,1:n);
figure(5);
surf(phi33,'FaceColor','interp', 'EdgeColor','none','FaceLighting','phong');
camlight left, axis tight
xlabel('X/Pixels','FontSize',14);ylabel('Y/Pixels','FontSize',14);zlabel('Phase/Radians','FontSize',14);%title('LSBLS Phase Unwrapping','FontSize',14)
set(figure(5),'name','LSBLS Phase Unwrapping','Numbertitle','off');
相关文章推荐
- 最小二乘解包裹算法----MATLAB实现
- 简单好用的最小二乘椭圆拟合算法---MATLAB实现
- 基于OpenCV图像最小二乘相位解包裹算法
- 最小二乘算法 C 语言实现
- 智能建模之最小二乘辨识LS:Matlab实现
- 最小二乘曲线拟合——C语言算法实现二
- 最小二乘椭圆拟合matlab代码实现
- 干涉极值相位提取算法(EVI)----MATLAB实现
- matlab实现相位解包裹
- 最小二乘曲线拟合matlab实现
- 基于光流法相位提取算法---MATLAB实现
- 施密特正交化(GS)相位提取算法-----MATLAB实现
- matlab实现图割算法中的最大流最小割Max-flow/min-cut问题(一)
- 加权最小二乘(wls)滤波算法原理及实现
- 最小二乘曲线拟合matlab实现
- 基于施密特正交化和最小二乘椭圆拟合的相位提取算法
- 内积之比法相位提取算法(RIP)---MATLAB实现
- 基于傅里叶变换的相位提取算法---MATLAB实现
- 最小二乘曲线拟合算法的C++实现
- Matlab实现Kruskal最小生成树算法