久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2700|回復: 1
打印 上一主題 下一主題
收起左側

攝像頭圖像矯正

[復制鏈接]
跳轉到指定樓層
樓主
ID:148195 發表于 2016-11-16 09:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
Array_forward_bucket=cell(80,140);
Array_backward_bucket=cell(80,140);
Array_forward_bird=cell(80,140);
Array_backward_bird=cell(80,140);
st.row=0;st.col=0;
for m=1:80
      for n=1:140
         Array_forward_bucket{m,n}=st;Array_backward_bucket{m,n}=st;Array_forward_bird{m,n}=st;Array_backward_bird{m,n}=st;
    end
end
img_origin1 = imread('圖像001.bmp');  
img_origin = img_origin1(80:-1:1,140:-1:1);  
  img_origin1 = img_origin;
k1 = -0.00001374;  % 形變參數,根據實際情況調整  
k2 = -0.00001057;  
  
img_size = size( img_origin );  
img_undist = zeros( img_size );  
img_undist = uint8( img_undist );  
  
  
for l1 = 1:img_size(1)  % 垂直方向  
      
    y = l1 - img_size(1)/2;  
      
    for l2 = 1:img_size(2)  % 水平方向  
         
        x = l2 - img_size(2)/2;  
         
        x1 = round( x * ( 1 + k1 * x * x + k2 * y * y ) );  
        y1 = round( y * ( 1 + k1 * x * x + k2 * y * y ) );  
        y1 = y1 + img_size(1)/2;   
        x1 = x1 + img_size(2)/2;  
         
        img_undist(l1,l2) = img_origin(y1, x1);  
        Array_forward_bucket{l1,l2}.row=y1;
        Array_forward_bucket{l1,l2}.col=x1;
        Array_backward_bucket{y1,x1}.row= l1;
Array_backward_bucket{y1,x1}.col= l2;
    end  
end  
  
  
figure(1);  
subplot(121); imshow(img_origin);  
subplot(122); imshow(img_undist);
imwrite(img_undist,'line1_tong.bmp');  
A=imread('line1_tong.bmp');
h=0.330;%垂直高度
alpha=153.0*pi/180;%垂直視角
beta=123*pi/180;%水平視角
% theta=pi/2-atan(0.5/6);%垂直俯角
theta=atan(81.2*pi/180);%垂直俯角
gama=0;%水平傾角
figure;
imshow(A);
[m n]=size(A);
B=A;
after_row=80;
after_col=140;
C=zeros(after_row,after_col);
zoom2=27.9;
zoom1=48.8;%48.8
rowadd = 8;coladd=-0;
for j=1:after_row
    for i=1:after_col
        x=(-(j-1)+after_row+rowadd)/zoom1;
        y=((i-1)-after_col/2+coladd)/zoom2;
            
        u_inv=(x*m-m*h*tan(theta))/(2*x*tan(theta)*tan(alpha)+2*h*tan(alpha));
        tan_puOg=tan(alpha)*2*u_inv/m;
        tan_puOp=y/sqrt(h^2+x^2);
        tan_pvOg=tan_puOp*sqrt(1+tan_puOg^2);
        v_inv=tan_pvOg*n/tan(beta)/2;
        
        Xt=-u_inv+m/2;
        Yt=v_inv+n/2;             sx=floor(Xt);
         sy=floor(Yt);
         a=Xt-sx;b=Yt-sy;       %小數部分     %下面是插值算法,利用最近鄰插值法
         if((b<0.5))
             Yt=sy;
         else
             Yt=sy+1;
         end
         if((a<0.5))
             Xt=sx;
         else
             Xt=sx+1;
         end
        if Xt<0.5 || Xt>m  || Yt<0.5 || Yt>n
             continue;
        end
        C(j,i)=img_origin1(round(Xt),round(Yt));
      
        Array_forward_bird{j,i}.row= round(Xt);
     Array_forward_bird{j,i}.col= round(Yt);
     end
end
figure(3);
C=uint8(C);
subplot(121);
imshow(C);
for u=1:after_row
    for v=1:after_col
        u_inv=m/2-u;
        v_inv=v-n/2;
        x=h*(m*tan(theta)+2*u_inv*tan(alpha))/(m-2*u_inv*tan(theta)*tan(alpha));
  
        mmm= 3.55;%3.2;
        y=(mmm*v_inv*tan(beta)*(x*tan(theta)+h))/(n*(tan(theta)^2+1));
        Xt=after_row-x*zoom1+rowadd;

        Yt=y*zoom2+after_col/2-coladd + 0.5;
               sx=floor(Xt);
         sy=floor(Yt);
         a=Xt-sx;b=Yt-sy;       %小數部分     %下面是插值算法,利用最近鄰插值法
         if((b<0.5))
             Yt=sy;
         else
             Yt=sy+1;
         end
         if((a<0.5))
             Xt=sx;
         else
             Xt=sx+1;
         end
   if Xt<0.5 || Xt>m  || Yt<0.5 || Yt>n
             continue;
        end
       D(u,v)=C(round(Xt),round(Yt));
            
        Array_backward_bird{u,v}.row= round(Xt);
     Array_backward_bird{u,v}.col= round(Yt);
end
end
D=uint8(D);figure(6);
subplot(121);imshow(img_undist);subplot(122);imshow(D);
fidout=fopen('Array_backward_bird_col.txt','w');
for s=1:80
    for t=1:140
      if  Array_backward_bird{s,t}.col<1
   fprintf(fidout,'%d,',Array_backward_bird{s,t}.col);
    else  
fprintf(fidout,'%d,',Array_backward_bird{s,t}.col-1);
end
end
fprintf(fidout,'\n');
  end
fclose(fidout);

fidout=fopen('Array_backward_bird_row.txt','w');
for s=1:80
    for t=1:140
      if  Array_backward_bird{s,t}.row<1
   fprintf(fidout,'%d,',Array_backward_bird{s,t}.row);
    else  
fprintf(fidout,'%d,',Array_backward_bird{s,t}.row-1);
end
end
fprintf(fidout,'\n');
  end
fclose(fidout);

fidout=fopen('Array_forward_bird_row.txt','w');
for s=1:80
    for t=1:140
      if  Array_forward_bird{s,t}.row<1
   fprintf(fidout,'%d,',Array_forward_bird{s,t}.row);
    else  
fprintf(fidout,'%d,',Array_forward_bird{s,t}.row-1);
end
end
fprintf(fidout,'\n');
  end
fclose(fidout);

fidout=fopen('Array_forward_bird_col.txt','w');
for s=1:80
    for t=1:140
      if  Array_forward_bird{s,t}.col<1
   fprintf(fidout,'%d,',Array_forward_bird{s,t}.col);
else  
fprintf(fidout,'%d,',Array_forward_bird{s,t}.col-1);
end
end
fprintf(fidout,'\n');
  end
fclose(fidout);
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:302982 發表于 2018-4-7 01:16 來自手機 | 只看該作者
這是matlad語言
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品久久久 | 成年视频在线观看 | 激情欧美一区二区三区中文字幕 | 一级黄色片网址 | 国产ts人妖系列高潮 | 欧美在线国产精品 | 久久精品中文字幕 | 亚洲风情在线观看 | 国产精品视频 | 三级视频网站 | 成人妇女免费播放久久久 | 天天色天天射天天干 | 黑人巨大精品 | 成人在线中文字幕 | 国产成人精品高清久久 | 伊人狠狠 | 亚洲国产视频一区二区 | 亚洲成人中文字幕 | www.成人免费视频 | 日本免费在线 | 国产95在线 | 亚州激情| 亚洲男人天堂 | 亚洲精品视频在线 | 仙人掌旅馆在线观看 | 天堂中文在线播放 | 好好的日在线视频 | 91资源在线 | av网站免费 | 久久精品亚洲精品 | 成人a视频片观看免费 | 国产综合久久 | 亚洲精选一区二区 | 亚洲欧美日韩精品久久亚洲区 | 一区二区在线免费观看 | 日韩图区 | 九九热在线视频免费观看 | 一区二区在线 | av入口 | 国产精品五月天 | 午夜久久久久久久久久一区二区 |