无人机飞行图像处理(matlab杯)感想

        开始时觉得图像处理没什么难度,无非就是RGB转化成HSV,设置阈值,进行二值化,然后进行边缘检测,再利用得到的矩阵进行计算得到偏移量或者偏航角。但事实上,当开始进行初赛作品的设计的时候就出现了很大的问题。

        首先存在的问题是,要利用simulink来进行搭建,而我们对于simulink没有一点基础,所幸其中有matlab函数供我们使用。

        首先数字图像处理部分提供的是RGB三条通道,所以第一步就是将RGB三条通道合成,进行颜色模型的转化,利用matlab所带的app进行代码的自动生成,这样第一步的二值化就完成了。

        其次,要进行边缘的检测,这里由于赛道使用的是直线,所以,我们的想法是拉出canny检测模块,再将输出进行Hough变换,得到三个输出变量,再进行linehough的检测,最终调试出最理想的直线,从而得到误差较小的偏航角,作为控制模块的输入。

        这里我们遇到了第一个问题,就是就是输入和输出的问题,其中会出现矩阵维度大小的问题,可以通过matlab设置解决,这里linehough检测的效果不太理想,所以重新写代码,而且调用这些函数会影响运行速度,特别是当在实体无人机上运行的时候。

道路边界的检测:

        利用逐行扫描的形式进行,由于进行了二值化处理,图像中会出现0,1分布,这样,道路边界就处于0,1边界上,可以根据这个特点来进行边界的判定。同时考虑到摄像头的精度以及二值化处理的精度,我们可以允许一定的像素点漂移,这个可以根据实际的效果和图像大小进行设置,即在直道时,可能由于像素点的偏移,会出现以下这种情况:

...00000000011111110000000...

...00000000011111110000000...

...00000000111111100000000...

...00000000011111110000000...

...00000000011111110000000...

这样仍可以定义为90°的直线。

      情况①:双边轨道   这样根据像素点的0,1判断就可以检测处左右轨道边界。

      情况②:单边轨道,处于拐角的地方,这样只可以检测到其中一条边界,可以加一个判断,将没有检测到的边界定义成图像的边界。

      情况③:出现特殊赛道,如环形,十字等等,这根据赛道实际的运行特点进行设计。

        对于检测到的左右边界,可以进行平均求解处赛道的中心,这样可以先在静态图中进行调试,选择最合适的参数。

偏航角的求解:

        根据图像大小以及赛道拐角的大小进行超前检测,这里超前检测根据实际调整。这样可以得到一段赛道的信息,以图象中心作为基点,根据像素点的偏移,利用加权平均的方法求解出偏移角度(根据实际的图像放大缩小比例),由于无人机图像是垂直向下的,无变形情况,所以可以直接取平均,这样可以减小误差。将图像中心作为基点的好处时,当无人机由于拐角偏离轨道时,仍然可以调整回轨道上。

        这样数字图像处理部分的基本思路已经解决,这个基本可以解决百分之八十的赛道问题,具体的特殊赛道还要根据赛道的特点,已经实际赛道要求特点进行条件判定或者约束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值