⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phaseunwrape.m

📁 可以解包二位波前相位
💻 M
字号:


number=0;
number1=0;
number2=0;
number3=0;
phie=phid;

%unwrapping the phase
for p=1:256
     q=257-p;
       if(abs(phid(256,q+1)-phid(256,q))>5);
        if(phid(256,q+1)>phid(256,q))
            number2=number2+1;
        end
           if(phid(256,q+1)<phid(256,q))
          number2=number2-1;
        end
    end;
     number=number2;
     number1=number2;
for n=1:256
    m=257-n;    
    if(abs(phid(m+1,q)-phid(m,q))>5);
        if(phid(m+1,q)>phid(m,q))
            number=number+1;
        end
           if(phid(m+1,q)<phid(m,q))
           number=number-1;
        end
    end;
    phie(m,q)=number*pi*2+phid(m,q);
       k=256+n;
        if(abs(phid(k,q)-phid(k-1,q))>5);
        if(phid(k,q)<phid(k-1,q))
            number1=number1+1;
        end
           if(phid(k,q)>phid(k-1,q))
         number1=number1-1;
        end
    end;
    phie(k,q)=number1*pi*2+phid(k,q);
end;

r=256+p;
    if(abs(phid(256,r)-phid(256,r-1))>5);
        if(phid(256,r)<phid(256,r-1))
            number3=number3+1;
        end
           if(phid(256,r)>phid(256,r-1))
             number3=number3-1;
        end
    end;
   number=number3;
   number1=number3;


for n=1:256
    m=257-n;    
    if(abs(phid(m+1,r)-phid(m,r))>5);
        if(phid(m+1,r)>phid(m,r))
            number=number+1;
        end
           if(phid(m+1,r)<phid(m,r))
          number=number-1;
        end
    end;
    phie(m,r)=number*pi*2+phid(m,r);
    
      k=256+n;
        if(abs(phid(k,r)-phid(k-1,r))>5);
           if(phid(k,r)<phid(k-1,r))
              number1=number1+1;
           end
           if(phid(k,r)>phid(k-1,r))
              number1=number1-1;
           end
       end;
    phie(k,r)=number1*pi*2+phid(k,r);
end;
  


end
%figure,plot(phie(256,:));


  
number=0;
number1=0;
number2=0;
number3=0;

phif=phic;


%unwrapping the phase

for p=1:256
     
    q=257-p;
    
    if(abs(phic(256,q+1)-phic(256,q))>5);
        if(phic(256,q+1)>phic(256,q))
            number2=number2+1;
        end
           if(phic(256,q+1)<phic(256,q))
          number2=number2-1;
        end
    end;
    
     number=number2;
     number1=number2;
for n=1:256
    m=257-n;    
    if(abs(phic(m+1,q)-phic(m,q))>5);
        if(phic(m+1,q)>phic(m,q))
            number=number+1;
        end
           if(phic(m+1,q)<phic(m,q))
           number=number-1;
        end
    end;
    phif(m,q)=number*pi*2+phic(m,q);
    
    k=256+n;
        if(abs(phic(k,q)-phic(k-1,q))>5);
        if(phic(k,q)<phic(k-1,q))
            number1=number1+1;
        end
           if(phic(k,q)>phic(k-1,q))
         number1=number1-1;
        end
    end;
    phif(k,q)=number1*pi*2+phic(k,q);
end;





r=256+p;
    if(abs(phic(256,r)-phic(256,r-1))>5);
        if(phic(256,r)<phic(256,r-1))
            number3=number3+1;
        end
           if(phic(256,r)>phic(256,r-1))
             number3=number3-1;
        end
    end;
   number=number3;
   number1=number3;


for n=1:256
    m=257-n;    
    if(abs(phic(m+1,r)-phic(m,r))>5);
        if(phic(m+1,r)>phic(m,r))
            number=number+1;
        end
           if(phic(m+1,r)<phic(m,r))
          number=number-1;
        end
    end;
    phif(m,r)=number*pi*2+phic(m,r);
    
      k=256+n;
        if(abs(phic(k,r)-phic(k-1,r))>5);
           if(phic(k,r)<phic(k-1,r))
              number1=number1+1;
           end
           if(phic(k,r)>phic(k-1,r))
              number1=number1-1;
           end
       end;
    phif(k,r)=number1*pi*2+phic(k,r);
end;


end;

eerr11=sum(sum(abs(phie-phif)))/512/512
eerr12=sum(sum(abs(abs(E1)-abs(E21))./abs(E1)))/512/512

 
phig=phie;
phih=phif;


%平滑
for m=3:510
    for n=3:510
        eee=(phie(m,n+2)+phie(m,n+1)+phie(m,n-2)+phie(m,n-1)+phie(m+2,n)+phie(m+1,n)+phie(m-2,n)+phie(m-1,n))/8;
     if(abs(phig(m,n)-eee)>2.5)
         phig(m,n)=eee;
     end
 end
end;

 


for m=3:510
    for n=3:510
        eee=(phif(m,n+2)+phif(m,n+1)+phif(m,n-2)+phif(m,n-1)+phif(m+2,n)+phif(m+1,n)+phif(m-2,n)+phif(m-1,n))/8;
     if(abs(phih(m,n)-eee)>2.5)
         phih(m,n)=eee;
     end
 end
end;
disp('unwrapped')
phih=OLD1.*2.*pi./l;
eerr11=sum(sum(abs(phih-phig)))/512/512
eerr12=sum(sum(abs(abs(E1)-abs(E21))./abs(E1)))/512/512

l=1:8:512;
figure,plot(l,phih(256,1:8:512),'-',l,phig(256,1:8:512),'.');
axis([0,500,-0.5,45]);
figure,plot(l,phif(256,1:8:512)-phie(256,1:8:512),'-',l,phih(256,1:8:512)-phig(256,1:8:512),'.');
axis([0,500,-0.5,10]);


for m=3:510
    for n=3:510
        eee=(phi1(m,n+2)+phi1(m,n+1)+phi1(m,n-2)+phi1(m,n-1)+phi1(m+2,n)+phi1(m+1,n)+phi1(m-2,n)+phi1(m-1,n))/8;
     if(abs(phi1(m,n)-eee)>0.1)
         phi1(m,n)=eee;
     end
 end
end;

 
l=1:8:512;
figure,plot(l,phih(256,1:8:512),'-',l,phig(256,1:8:512),'.');
axis([0,500,-0.5,45]);
figure,plot(l,phif(256,1:8:512)-phie(256,1:8:512),'-',l,phih(256,1:8:512)-phig(256,1:8:512),'.');
axis([0,500,-0.5,10]);


for m=3:510
    for n=3:510
        eee=(phi1(m,n+2)+phi1(m,n+1)+phi1(m,n-2)+phi1(m,n-1)+phi1(m+2,n)+phi1(m+1,n)+phi1(m-2,n)+phi1(m-1,n))/8;
     if(abs(phi1(m,n)-eee)>0.1)
         phi1(m,n)=eee;
     end
 end
end;
l=1:8:512;
figure,plot(l,phih(256,1:8:512),'-',l,phig(256,1:8:512),'.');
axis([0,500,-0.5,45]);
figure,plot(l,phif(256,1:8:512)-phie(256,1:8:512),'-',l,phih(256,1:8:512)-phig(256,1:8:512),'.');
axis([0,500,-0.5,10]);


for m=3:510
    for n=3:510
        eee=(phi1(m,n+2)+phi1(m,n+1)+phi1(m,n-2)+phi1(m,n-1)+phi1(m+2,n)+phi1(m+1,n)+phi1(m-2,n)+phi1(m-1,n))/8;
     if(abs(phi1(m,n)-eee)>0.1)
         phi1(m,n)=eee;
     end
 end
end;

 l=1:8:512;
figure,plot(l,phih(256,1:8:512),'-',l,phig(256,1:8:512),'.');
axis([0,500,-0.5,45]);
figure,plot(l,phif(256,1:8:512)-phie(256,1:8:512),'-',l,phih(256,1:8:512)-phig(256,1:8:512),'.');
axis([0,500,-0.5,10]);


for m=3:510
    for n=3:510
        eee=(phi1(m,n+2)+phi1(m,n+1)+phi1(m,n-2)+phi1(m,n-1)+phi1(m+2,n)+phi1(m+1,n)+phi1(m-2,n)+phi1(m-1,n))/8;
     if(abs(phi1(m,n)-eee)>0.1)
         phi1(m,n)=eee;
     end
 end
end;

 for m=3:510
    for n=3:510
        eee=(phi1(m,n+2)+phi1(m,n+1)+phi1(m,n-2)+phi1(m,n-1)+phi1(m+2,n)+phi1(m+1,n)+phi1(m-2,n)+phi1(m-1,n))/8;
     if(abs(phi1(m,n)-eee)>0.1)
         phi1(m,n)=eee;
     end
 end
end;
l=1:8:512;
figure,plot(l,phih(256,1:8:512),'-',l,phig(256,1:8:512),'.');
axis([0,500,-0.5,45]);
figure,plot(l,phif(256,1:8:512)-phie(256,1:8:512),'-',l,phih(256,1:8:512)-phig(256,1:8:512),'.');
axis([0,500,-0.5,10]);


for m=3:510
    for n=3:510
        eee=(phi1(m,n+2)+phi1(m,n+1)+phi1(m,n-2)+phi1(m,n-1)+phi1(m+2,n)+phi1(m+1,n)+phi1(m-2,n)+phi1(m-1,n))/8;
     if(abs(phi1(m,n)-eee)>0.1)
         phi1(m,n)=eee;
     end
 end
end;

 l=1:8:512;
figure,plot(l,phih(256,1:8:512),'-',l,phig(256,1:8:512),'.');
axis([0,500,-0.5,45]);
figure,plot(l,phif(256,1:8:512)-phie(256,1:8:512),'-',l,phih(256,1:8:512)-phig(256,1:8:512),'.');
axis([0,500,-0.5,10]);


for m=3:510
    for n=3:510
        eee=(phi1(m,n+2)+phi1(m,n+1)+phi1(m,n-2)+phi1(m,n-1)+phi1(m+2,n)+phi1(m+1,n)+phi1(m-2,n)+phi1(m-1,n))/8;
     if(abs(phi1(m,n)-eee)>0.1)
         phi1(m,n)=eee;
     end
 end
end;

 number=0;
number1=0;
number2=0;
number3=0;
phie=phid;

%unwrapping the phase
for p=1:256
     q=257-p;
       if(abs(phid(256,q+1)-phid(256,q))>5);
        if(phid(256,q+1)>phid(256,q))
            number2=number2+1;
        end
           if(phid(256,q+1)<phid(256,q))
          number2=number2-1;
        end
    end;
     number=number2;
     number1=number2;
for n=1:256
    m=257-n;    
    if(abs(phid(m+1,q)-phid(m,q))>5);
        if(phid(m+1,q)>phid(m,q))
            number=number+1;
        end
           if(phid(m+1,q)<phid(m,q))
           number=number-1;
        end
    end;
    phie(m,q)=number*pi*2+phid(m,q);
       k=256+n;
        if(abs(phid(k,q)-phid(k-1,q))>5);
        if(phid(k,q)<phid(k-1,q))
            number1=number1+1;
        end
           if(phid(k,q)>phid(k-1,q))
         number1=number1-1;
        end
    end;
    phie(k,q)=number1*pi*2+phid(k,q);
end;

r=256+p;
    if(abs(phid(256,r)-phid(256,r-1))>5);
        if(phid(256,r)<phid(256,r-1))
            number3=number3+1;
        end
           if(phid(256,r)>phid(256,r-1))
             number3=number3-1;
        end
    end;
   number=number3;
   number1=number3;


for n=1:256
    m=257-n;    
    if(abs(phid(m+1,r)-phid(m,r))>5);
        if(phid(m+1,r)>phid(m,r))
            number=number+1;
        end
           if(phid(m+1,r)<phid(m,r))
          number=number-1;
        end
    end;
    phie(m,r)=number*pi*2+phid(m,r);
    
      k=256+n;
        if(abs(phid(k,r)-phid(k-1,r))>5);
           if(phid(k,r)<phid(k-1,r))
              number1=number1+1;
           end
           if(phid(k,r)>phid(k-1,r))
              number1=number1-1;
           end
       end;
    phie(k,r)=number1*pi*2+phid(k,r);
end;
  


end
%figure,plot(phie(256,:));


  
number=0;
number1=0;
number2=0;
number3=0;

phif=phic;


%unwrapping the phase

for p=1:256
     
    q=257-p;
    
    if(abs(phic(256,q+1)-phic(256,q))>5);
        if(phic(256,q+1)>phic(256,q))
            number2=number2+1;
        end
           if(phic(256,q+1)<phic(256,q))
          number2=number2-1;
        end
    end;
    
     number=number2;
     number1=number2;
for n=1:256
    m=257-n;    
    if(abs(phic(m+1,q)-phic(m,q))>5);
        if(phic(m+1,q)>phic(m,q))
            number=number+1;
        end
           if(phic(m+1,q)<phic(m,q))
           number=number-1;
        end
    end;
    phif(m,q)=number*pi*2+phic(m,q);
    
    k=256+n;
        if(abs(phic(k,q)-phic(k-1,q))>5);
        if(phic(k,q)<phic(k-1,q))
            number1=number1+1;
        end
           if(phic(k,q)>phic(k-1,q))
         number1=number1-1;
        end
    end;
    phif(k,q)=number1*pi*2+phic(k,q);
end;





r=256+p;
    if(abs(phic(256,r)-phic(256,r-1))>5);
        if(phic(256,r)<phic(256,r-1))
            number3=number3+1;
        end
           if(phic(256,r)>phic(256,r-1))
             number3=number3-1;
        end
    end;
   number=number3;
   number1=number3;


for n=1:256
    m=257-n;    
    if(abs(phic(m+1,r)-phic(m,r))>5);
        if(phic(m+1,r)>phic(m,r))
            number=number+1;
        end
           if(phic(m+1,r)<phic(m,r))
          number=number-1;
        end
    end;
    phif(m,r)=number*pi*2+phic(m,r);
    
      k=256+n;
        if(abs(phic(k,r)-phic(k-1,r))>5);
           if(phic(k,r)<phic(k-1,r))
              number1=number1+1;
           end
           if(phic(k,r)>phic(k-1,r))
              number1=number1-1;
           end
       end;
    phif(k,r)=number1*pi*2+phic(k,r);
end;


end;

eerr11=sum(sum(abs(phie-phif)))/512/512
eerr12=sum(sum(abs(abs(E1)-abs(E21))./abs(E1)))/512/512

 
phig=phie;
phih=phif;


%平滑
for m=3:510
    for n=3:510
        eee=(phie(m,n+2)+phie(m,n+1)+phie(m,n-2)+phie(m,n-1)+phie(m+2,n)+phie(m+1,n)+phie(m-2,n)+phie(m-1,n))/8;
     if(abs(phig(m,n)-eee)>2.5)
         phig(m,n)=eee;
     end
 end
end;

 


for m=3:510
    for n=3:510
        eee=(phif(m,n+2)+phif(m,n+1)+phif(m,n-2)+phif(m,n-1)+phif(m+2,n)+phif(m+1,n)+phif(m-2,n)+phif(m-1,n))/8;
     if(abs(phih(m,n)-eee)>2.5)
         phih(m,n)=eee;
     end
 end
end;
disp('unwrapped')
phih=OLD1.*2.*pi./l;
eerr11=sum(sum(abs(phih-phig)))/512/512
eerr12=sum(sum(abs(abs(E1)-abs(E21))./abs(E1)))/512/512

l=1:8:512;
figure,plot(l,phih(256,1:8:512),'-',l,phig(256,1:8:512),'.');
axis([0,500,-0.5,45]);
figure,plot(l,phif(256,1:8:512)-phie(256,1:8:512),'-',l,phih(256,1:8:512)-phig(256,1:8:512),'.');
axis([0,500,-0.5,10]);


for m=3:510
    for n=3:510
        eee=(phi1(m,n+2)+phi1(m,n+1)+phi1(m,n-2)+phi1(m,n-1)+phi1(m+2,n)+phi1(m+1,n)+phi1(m-2,n)+phi1(m-1,n))/8;
     if(abs(phi1(m,n)-eee)>0.1)
         phi1(m,n)=eee;
     end
 end
end;

 
l=1:8:512;
figure,plot(l,phih(256,1:8:512),'-',l,phig(256,1:8:512),'.');
axis([0,500,-0.5,45]);
figure,plot(l,phif(256,1:8:512)-phie(256,1:8:512),'-',l,phih(256,1:8:512)-phig(256,1:8:512),'.');
axis([0,500,-0.5,10]);


for m=3:510
    for n=3:510
        eee=(phi1(m,n+2)+phi1(m,n+1)+phi1(m,n-2)+phi1(m,n-1)+phi1(m+2,n)+phi1(m+1,n)+phi1(m-2,n)+phi1(m-1,n))/8;
     if(abs(phi1(m,n)-eee)>0.1)
         phi1(m,n)=eee;
     end
 end
end;
l=1:8:512;
figure,plot(l,phih(256,1:8:512),'-',l,phig(256,1:8:512),'.');
axis([0,500,-0.5,45]);
figure,plot(l,phif(256,1:8:512)-phie(256,1:8:512),'-',l,phih(256,1:8:512)-phig(256,1:8:512),'.');
axis([0,500,-0.5,10]);


for m=3:510
    for n=3:510
        eee=(phi1(m,n+2)+phi1(m,n+1)+phi1(m,n-2)+phi1(m,n-1)+phi1(m+2,n)+phi1(m+1,n)+phi1(m-2,n)+phi1(m-1,n))/8;
     if(abs(phi1(m,n)-eee)>0.1)
         phi1(m,n)=eee;
     end
 end
end;

 l=1:8:512;
figure,plot(l,phih(256,1:8:512),'-',l,phig(256,1:8:512),'.');
axis([0,500,-0.5,45]);
figure,plot(l,phif(256,1:8:512)-phie(256,1:8:512),'-',l,phih(256,1:8:512)-phig(256,1:8:512),'.');
axis([0,500,-0.5,10]);


for m=3:510
    for n=3:510
        eee=(phi1(m,n+2)+phi1(m,n+1)+phi1(m,n-2)+phi1(m,n-1)+phi1(m+2,n)+phi1(m+1,n)+phi1(m-2,n)+phi1(m-1,n))/8;
     if(abs(phi1(m,n)-eee)>0.1)
         phi1(m,n)=eee;
     end
 end
end;

 for m=3:510
    for n=3:510
        eee=(phi1(m,n+2)+phi1(m,n+1)+phi1(m,n-2)+phi1(m,n-1)+phi1(m+2,n)+phi1(m+1,n)+phi1(m-2,n)+phi1(m-1,n))/8;
     if(abs(phi1(m,n)-eee)>0.1)
         phi1(m,n)=eee;
     end
 end
end;
l=1:8:512;
figure,plot(l,phih(256,1:8:512),'-',l,phig(256,1:8:512),'.');
axis([0,500,-0.5,45]);
figure,plot(l,phif(256,1:8:512)-phie(256,1:8:512),'-',l,phih(256,1:8:512)-phig(256,1:8:512),'.');
axis([0,500,-0.5,10]);


for m=3:510
    for n=3:510
        eee=(phi1(m,n+2)+phi1(m,n+1)+phi1(m,n-2)+phi1(m,n-1)+phi1(m+2,n)+phi1(m+1,n)+phi1(m-2,n)+phi1(m-1,n))/8;
     if(abs(phi1(m,n)-eee)>0.1)
         phi1(m,n)=eee;
     end
 end
end;

 l=1:8:512;
figure,plot(l,phih(256,1:8:512),'-',l,phig(256,1:8:512),'.');
axis([0,500,-0.5,45]);
figure,plot(l,phif(256,1:8:512)-phie(256,1:8:512),'-',l,phih(256,1:8:512)-phig(256,1:8:512),'.');
axis([0,500,-0.5,10]);


for m=3:510
    for n=3:510
        eee=(phi1(m,n+2)+phi1(m,n+1)+phi1(m,n-2)+phi1(m,n-1)+phi1(m+2,n)+phi1(m+1,n)+phi1(m-2,n)+phi1(m-1,n))/8;
     if(abs(phi1(m,n)-eee)>0.1)
         phi1(m,n)=eee;
     end
 end
end;

 





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -