目录

  • 透视变换的一些尝试
    • 原理
    • 变换的可行性
    • 变换的过程
    • 结语

透视变换的一些尝试

原理

  【图像处理】透视变换 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);

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

结语

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