最近在自學四步移相法提取相位,有個初級疑問:
有四幅移相圖片a、b、c、d如下:完整解包裹代碼如下:
程式運行后,主要是figure(7)和figure(8)沒看太明白,;從figure(5)和figure(6)中可以看出被測物體的輪廓,可是從figure(7)和figure(8)中,怎么能看出物體的輪廓呢?figure(7)和figure(8)的解包是怎么解的?
由于是初學者,所以請您不吝賜教,謝謝。
clc;
clear all
clf
X1=imread('a.bmp');
X2=imread('b.bmp');
X3=imread('c.bmp');
X4=imread('d.bmp');
figure(1);I1=imresize(X1,1,'bilinear'); imshow(I1);
figure(2); I2=imresize(X2,1,'bilinear');imshow(I2);
figure(3); I3=imresize(X3,1,'bilinear'); imshow(I3);
figure(4); I4=imresize(X4,1,'bilinear'); imshow(I4);
[M N]=size(I1);
I1=double(I1);
I2=double(I2);
I3=double(I3);
I4=double(I4);
for j=1:615
for i=2:M
phase(i,j)=atan2(I2(i,j)-I4(i,j),I1(i,j)-I3(i,j));
end
end
%四步相移法計算出相位
figure(5);
imshow(mat2gray(phase));
figure(6);
imshow(phase);
n=zeros(M,615); %解包
n(1,1)=0;
for i=2:615
if abs(phase(1,i)-phase(1,i-1))<pi
n(1,i)=n(1,i-1);
elseif phase(1,i)-phase(1,i-1)<=-pi
n(1,i)=n(1,i-1)+1;
elseif phase(1,i)-phase(1,i-1)>=pi
n(1,i)=n(1,i-1)-1;
end
end
for i=2:576
for j=1:615
if abs(phase(i,j)-phase(i-1,j))<pi
n(i,j)=n(i-1,j);
elseif phase(i,j)-phase(i-1,j)<=-pi
n(i,j)=n(i-1,j)+1;
elseif phase(i,j)-phase(i-1,j)>=pi
n(i,j)=n(i-1,j)-1;
end
end
end
pphase=phase+2*pi.*n;
figure(7);
imshow(mat2gray(pphase));
figure(8);
surf(pphase(2:end-1,2:end-1));
uj5u.com熱心網友回復:
這里圖片上傳有點問題,可以參考下面的鏈接,謝謝。http://zhidao.baidu.com/question/713095352075331125.html
uj5u.com熱心網友回復:
你說的figure5和6是截斷相位(包裹相位),此時的相位通過atan2函式解得在在[-pi,pi]之間,所以后面就按點再次展開,獲取每點相應的條紋級次n,帶入pphase=phase+2*pi.*n;這就是最終相位了,也是解包裹相位uj5u.com熱心網友回復:
樓主你好,請問你這里的解包裹用的什么方法?我最近也在學習四步相移法,謝謝指點。uj5u.com熱心網友回復:
有人還關注這個帖子嗎uj5u.com熱心網友回復:
你這個程式對嗎?我在做三步相移取相位和解包裹,就是參考的你這個,我做出的影像不知道對不對uj5u.com熱心網友回復:
你好,我最近也在看這方面的。請問你為什么要放四張圖呢,最后出來的這四張都是代表的同一張的包裹相位圖和解包相位圖嗎??uj5u.com熱心網友回復:
您好,我現在在做三步相移法取相位和解包裹,請問下您參考這個弄好了嗎?
uj5u.com熱心網友回復:
你好 問題解決了嘛 我最近也在學習這個 想請教一下轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/127613.html
標籤:其他開發語言
