www.pudn.com > quanjinpinjie.rar > coortransf.m


function [T1,coor_shift02]=coortransf(T0,f,coor_shift) 
%%%%图像坐标系到柱面坐标的转换 
%对输入图像序列T0按焦距f进行变换 
coor_shift02=coor_shift;%%%%第一维(行值)不变,第二维(列)在映射后更新 
[H,W,r,N]=size(T0); 
w2f=W/2/f; 
h2=H/2; 
constant2=f*atan(W/(2*f)); 
constant1=h2; 
 
for y=1:W      %%%%%%   列 
    angle=atan(y/f-w2f);%%%%atan((y-W/2)/f); 
     y1=uint16(f*angle+constant2); 
     if  y1==0  y1=1;  end 
    for x=1:H  %%%%%%%%%%%%   行 
     x1=uint16((x-h2)*cos(angle)+constant1); 
     if  x1==0  x1=1;end 
     if r==3   %%%%%%%%%%%%%彩色图像 
         for n=1:N  %%%%%%%%% 
             if (y==coor_shift(n,2)) coor_shift02(n,2)=y1; end%%%对应偏移量 
             T1(x1,y1,:,n)=T0(x,y,:,n);%%%%点的映射 
         end 
     elseif r==1 
%          T1(x1,y1)=T0(x,y); 
     end 
    end 
end 
[h,w,a,N]=size(T1); 
for i=1:60%%%边缘没有映射点的地方填白色 
    for j=1:w 
        if (T1(i,j,:,:)==0) 
            T1(i,j,:,:)=255; 
        end 
        if (T1(h-i,j,:,:)==0) 
            T1(i,j,:,:)=255; 
        end 
    end 
end