智能车打工日记(四)透视变换的一些尝试

透视变换的一些尝试

原理

【图像处理】透视变换 Perspective Transformation

变换的可行性

  1. 最直接的透视变换为将所有的像素点经过透视变换,得到一幅变换后的图。
    变换后的图形的形状将变成不规则的四边形,需要将图形进行截取,然后再作为车辆的图像进行处理。
    由于这种方式需要将每个像素点进行处理,并且在变换后还有极大的插值操作计算量,因此不适合在K66之类的芯片上进行处理。
  2. 经过思考与测试,发现先将图像进行处理,找到左右两条边线,然后再将边线进行透视变换,具有很好的可行性。因为只用对两条边线的像素点进行变换,并且插值操作变为一次的线性函数,计算量大大减小。

变换的过程

1. 在直道,获取变换矩阵

            //通过8个点进行变换矩阵计算
            Set_p1(L_black[5], 5);
            Set_p2(R_black[5], 5);
            Set_p3(L_black[10], 10);
            Set_p4(R_black[10], 10);
            Set_p5(L_black[5], 5);
            Set_p6(R_black[5], 5);
            Set_p7(L_black[5], 10);
            Set_p8(R_black[5], 10);
            //将上面八个点带入,进行变换矩阵运算,得到矩阵
            Get_Prst_Matrix();

计算得到的矩阵:
计算得到的矩阵
进行计算的图像:
在这里插入图片描述
2. 利用变换矩阵,将左右两条边线进行透视变换

   p_Tgt = PrstTrans_Cale(p_Tgt);

得到离散的左右边线
在这里插入图片描述
3. 将离散的左右边线进行插值处理

inter_point_L();
inter_point_R();

得到连续的左右边线
在这里插入图片描述
(上面出现了边线的断层,由于是好几个月前的代码了,就懒得深究了)

4. 保存并使用这个变换矩阵

//已知矩阵,直接设置
Set_Prst_Matrix(1, 0, 0,
           -1.347f, 0.867f, -0.013f,
            6.733f, 0.667f, 1.06f);

获得弯道的变换边线
在这里插入图片描述

结语

由于能力有限,仍没找到合适的控制来匹配透视变换。

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值