智能车制作

标题: MATLAB 透视逆变换代码分享 [打印本页]

作者: miaobrother    时间: 2016-1-3 11:54
标题: MATLAB 透视逆变换代码分享
其实很多东西真正花点心思,才发现也不是不可琢磨。

function J= TwoLinear( I )
%UNTITLED3 Summary of this function goes here
%  双线性插值 by Benzli
I=imread('tx.png');
I=double(I);
[H,W]=size(I);
%A=43.536*pi/360;  %2a代表摄像头垂直视野角;43.536
%B=55.591*pi/360;  %2b代表摄像头水平视野角;55.591
A=56*pi/360;  %2a代表摄像头垂直视野角;43.536
B=55*pi/180;  %2b代表摄像头水平视野角;55.591
R=40*pi/180;  %r代表摄像头光轴和水平路面夹角
h=1.25;          %摄像头安装高度
H1=800;W1=600;  %需要显示图像的高和宽
h1=4;w1=2;      %实际路面的高和宽

%由世界坐标变换到图像坐标系
for M=1:H1               %变换之后路面图像H1*W1=400*600个像素,路面宽度为7m,高度为10m
    for N=1:W1
        Px=N*w1/W1-w1/2; Py=-M*h1/H1+h1/2+h*cot(R);  %将(M,N)转换为路面实际坐标(Px,Py),只有在涉及到
                                                     %路面坐标系得时候才会有把道路坐标系下的图像放缩的问题,
                                                     %乘以一定的象素值
         Py1=(Py*H-H*h*tan(R))/(2*Py*tan(R)*tan(A)+2*h*tan(A)); % 垂直方向
         Px1=(Px*W)/(sqrt(h*h+Py*Py)*2*tan(B)); % 水平方向
         m=H/2-Py1;                        %对原图拍摄的图像进行坐标变换
         n=Px1+W/2;  
         i=floor(m);
         j=floor(n);
         a=m-i;b=n-j;       %小数部分
         %下面是插值算法,利用双线性插值法
         if(((i+1)>H)||((j+1)>W)||(i<1)||(j<1))
          Imn=0;
         else
         Imn=(1-a)*(1-b)*I(i,j)+a*(1-b)*I(i+1,j)+b*(1-a)*I(i,j+1)+a*b*I(i+1,j+1);
         end   
          %{
         if((m1>H)||(n1>W)||(m1<1)||(n1<1))
          Imn=0;
         else
          Imn=I(m1,n1);
         end
      %}  
      J(M,N)=uint8(Imn);

    end
end
figure,imshow(J);


end


作者: miaobrother    时间: 2016-1-3 11:58
各位第一次参赛的同学们 你们进度如何啊。我是十二月开始的时候开始,12月底速度达到一米五之后就停了,因为那个初级的程序已经没啥用了,最近在弄这个逆变换。这么久以来,其实大部分时间都在了解理论知识,自我感觉吧,软件这方面,有了思路就会快很多,而不是像硬件那样 每个地方都要去试。大家觉得呢,希望不会有人觉得我这个菜鸟是在装逼:hug::hug::hug::hug:
作者: 马达加斯加    时间: 2016-1-3 14:01
顶一个
作者: 幽谷之旅    时间: 2016-1-4 12:08
顶一个!
作者: xhx331153066    时间: 2016-1-5 12:20
miaobrother 发表于 2016-1-3 11:58
各位第一次参赛的同学们 你们进度如何啊。我是十二月开始的时候开始,12月底速度达到一米五之后就停了,因 ...

软件要试的地方比硬件多吧应该~~

作者: 万川集海    时间: 2016-1-8 19:47
顶一个,谢谢楼主

作者: miaobrother    时间: 2016-1-8 21:48
xhx331153066 发表于 2016-1-5 12:20
软件要试的地方比硬件多吧应该~~

额。。。也是。初步是这样觉得的,可能是运气好吧加上程序不复杂。。暂时没碰到太多可调的,一写一个准

作者: xhx331153066    时间: 2016-1-9 11:19
miaobrother 发表于 2016-1-8 21:48
额。。。也是。初步是这样觉得的,可能是运气好吧加上程序不复杂。。暂时没碰到太多可调的,一写一个准:l ...

以后会碰上的,不是调错误,是调各种情况

作者: ⊙Lin⊙    时间: 2016-1-10 01:17
就这个比赛而言,软件调试花的时间和精力比硬件多多了。
作者: g847279681    时间: 2016-1-14 10:25
楼主你参考的是那个论文?
可以发出来学习一下么
作者: miaobrother    时间: 2016-1-14 13:21
g847279681 发表于 2016-1-14 10:25
楼主你参考的是那个论文?
可以发出来学习一下么

哪个论文? 源代码这种东西我经常去www.pudn.com下,论文百度应该有 。这种直接二维插值的逆投影变换不知道能不能应用到单片机中,自己也还没用到单片机中去过

作者: sefdzxcv    时间: 2016-1-15 16:30
今天我找了一天了,,5555感谢感谢
作者: junhuadezhineng    时间: 2016-1-18 19:30
sefdzxcv 发表于 2016-1-15 16:30
今天我找了一天了,,5555感谢感谢

你能用到单片机上了吗
作者: 刘云峰1996    时间: 2016-1-19 17:32
dingyige
作者: zhouyingtong    时间: 2016-1-19 19:30
码住。、
作者: zss123    时间: 2016-1-20 11:16
666666666
作者: 江水奔流    时间: 2016-1-21 16:42
话说,怎样用到单片机里呢?建立向量表?晕~~
作者: gdz    时间: 2016-2-1 09:58
顶一个,
作者: 54_刘小威    时间: 2016-2-1 18:00
逆透视作用不大吧,处理麻烦站时间
作者: wwwtaoist    时间: 2016-2-17 10:13
楼主打算如何运用逆透视得来的图像呢?直接求中线再求偏移量总感觉有点大材小用,
作者: 喆3喆    时间: 2016-2-24 13:43
:lol:lol
作者: dddsym    时间: 2016-4-5 11:20
楼主亲测可行?
作者: 藤原拓海    时间: 2016-5-28 14:05
最近在看逆透视变换,头有点大,用你的代码在matlab中运行出来是一幅全黑的图像,还有您的摄像头高度实际路面宽度等等数据的单位是什么,望回复呀楼主,感谢
作者: 么饿么么么    时间: 2016-5-28 15:07
6666666666666666666666666666666
作者: zhangyongdzgcs    时间: 2016-7-12 13:54
谢谢分享
作者: curry成    时间: 2016-12-16 17:22
楼主最后研究得怎么样了,一年了,新人又走你们的老路了
作者: 斯特凡    时间: 2016-12-24 15:44
楼主还在吗,关于逆透视想请教一下你
世界坐标怎么选取得,视角怎么选取得
作者: 斯特凡    时间: 2016-12-24 15:53
%A=43.536*pi/360;  %2a代表摄像头垂直视野角;43.536
%B=55.591*pi/360;  %2b代表摄像头水平视野角;55.591
A=56*pi/360;  %2a代表摄像头垂直视野角;43.536
B=55*pi/180;  %2b代表摄像头水平视野角;55.591
R=40*pi/180;  %r代表摄像头光轴和水平路面夹角
h=1.25;          %摄像头安装高度
H1=800;W1=600;  %需要显示图像的高和宽
h1=4;w1=2;      %实际路面的高和宽
这些参数怎么得到的呀





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2