飞思卡尔--Matlab图像矫正估算赛道长度

发布者:恬淡岁月最新更新时间:2021-10-14 来源: eefocus关键字:飞思卡尔  Matlab 手机看文章 扫描二维码
随时随地手机看文章

由于参加飞思卡尔智能车比赛,铺赛道变成了一个重要的环节。而此次铺赛道用了过去留下的赛道进行拼接,导致赛道的长度不好计算,因此,博主与小伙伴想了一些办法估算长度,下面介绍Matlab图像矫正估算赛道长度的方法。


首先由于赛道过长的原因,无法获得整个赛道的图,俯视图则更不为可能。因此,本次方法为采集两张图片进行分别处理计算再相加。图片如下图所示。代码在文末链接,供参考改进。

 

接着我们截取我们需要的部分(以下以一边赛道为例)。

1.然后我们取该赛道的灰度值

2.接着再进行图像的矫正

3.进行初次的去噪(补充横线的白点)

4.对全黑的矩阵用双线法进行补充。(此处为关键,也可用最近邻插值法,由于博主在此处的算法较为粗略,因此算法复杂度高,且处理效果一般,改进空间较大)

5.对改图进行二值化

6.观察图像,再次去噪

7.最终效果图(该图左边反光较大,可再次进行处理)

PS:下图为用PS矫正后的图像(效果更好)。

用同样的方法可以得出另一半赛道的图片。

得出了二值化的矩阵之后,可利用面积法算出赛道的长度。首先计算出所有白点的个数。由于赛道的宽度是已知的(去掉两边的路肩共40cm),于是可以取一小段直道取其行的平均值,就可以算出赛道的宽度共占多少个像素点,也就可以算出一个像素点占多大的长度,再用总像素点除以每行所占像素点再乘以每个像素点的长度,即可大致得出赛道长度(由于再某些地方(十字和环岛)白像素点重叠了,因此最后再加上这些值即为赛道总长度。


用改方法算出的赛道长度大约为55米左右,用PS矫正后的图片则算出57米左右,而用车跑圈,利用编码器计数则算出56米左右。可见该方法还是存在一定的可行性的。


clear clc

point = 1.5;

point_long = 5;

value = 0.38 * 255;%初次去噪阈值

value2 = 0.45;%二次去噪阈值


%%%%%%%%%%%%%%%%读图%%%%%%%%%%%%%%%%

img= imread('2222.jpg');

img = rgb2gray(img);%求灰度值

imshow(img);


[left,down] = size(img);%读取图像大小

left1 = 800;%定义新矩阵长度

down1 = ceil((down / 2) * point * 2);%定义矩阵长度

img2 = uint8(zeros(left1,down1));%创建全黑矩阵

flag = down / 2; 

flag2 = down1 / 2;


left_last = 1;

left_ans = 1;

%%%%%%%%%%%%%%%%图像透视变换%%%%%%%%%%%%%%%%

for n = 1:left

    point_left = ((left - n) * ((point - 1) / (left - 1))) + 1;

    if n == 1

    else

        dis_bet = (point_long / (left - 1)) * (left - n) * 1 + 1;

        left_ans = round(left_last + dis_bet);

        left_last = left_ans;

    end

    for m = (down/2) : down

        down_flag = (m - flag) * point_left + flag2;

        down_ans = round(down_flag);

        img2(left_ans,down_ans) = img(n,m);

    end

    for m = 1 : (down/2)

        down_flag = flag2 - (flag - m) * point_left;

        down_ans = round(down_flag);

        img2(left_ans,down_ans) = img(n,m);

    end

end

figure

imshow(img2);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%初次去噪,将黑点变全白%%%%%%%%%%%%%%%%

for n = 1:(left_last)

    for m = 3:(down1)

        if (img2(n,m-2) >= value ) && (img2(n,m-1)

            img2(n,m-1) = 255;  

        end

    end

end

figure

imshow(img2);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%双线性填充图像%%%%%%%%%%%%%%%%

for n = 5:(left_last - 2)

    for m = 5:(down1 - 2)

        if img2(n,m) == 0

            sum = img2(n-1,m-1) + img2(n+1,m+1) + img2(n-1,m+1) + img2(n+1,m-1);

            point_num = sum / 2;

            img2(n,m) = point_num;

        end

    end

end

figure

imshow(img2);

I2 = im2bw(img2,value2);%二值化

figure

imshow(I2);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%二次去噪1%%%%%%%%%%%%%%%%

for n = 3:(left_last)

    for m = 3:(down1)

        if (I2(n-2,m) ==  0) && (I2(n-1,m) == 1) && (I2(n,m) == 0)

            I2(n-1,m) = 0;

        end

    end

end

figure

subplot(2,2,1);imshow(I2);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%二次去噪2%%%%%%%%%%%%%%%%

for n = 3:(left_last)

    for m = 3:(down1)

        if (I2(n,m-2) ==  0) && (I2(n,m-1) == 1) && (I2(n,m) == 0)

            I2(n,m-1) = 0;  

        end

    end

end

subplot(2,2,2);imshow(I2);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%二次去噪3%%%%%%%%%%%%%%%%

for n = 3:(left_last)

    for m = 3:(down1)

        if (I2(n,m-2) ==  1) && (I2(n,m-1) == 0) && (I2(n,m) == 1)

            I2(n,m-1) = 1;  

        end

    end

end

subplot(2,2,3);imshow(I2);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%二次去噪4%%%%%%%%%%%%%%%%

for n = 3:(left_last)

    for m = 3:(down1)

        if (I2(n-2,m) ==  0) && (I2(n-1,m) == 1) && (I2(n,m) == 0)

            I2(n-1,m) = 0;

        end

    end

end

subplot(2,2,4);imshow(I2);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure

imshow(I2);


white = 0;

for n = 1:left_ans

    for m = 1:down1

        if I2(n,m) == 1

            white = white + 1;

        end

    end

end

关键字:飞思卡尔  Matlab 引用地址:飞思卡尔--Matlab图像矫正估算赛道长度

上一篇:飞思卡尔运动小车前方道路识别
下一篇:飞思卡尔微控制与MSCAN ----自学笔记

推荐阅读最新更新时间:2024-11-10 11:06

MathWorks发布包含MATLAB和Simulink产品系列的2016a版本
中国北京 2016 年 3 月 22 日 MathWorks今日宣布,推出了 Release 2016a (2016a 版本)。此发行版包括 MATLAB 实时编辑器,它能够在单一的交互式环境中编写、运行和修改代码,从而加快探索性分析;还包括 App Designer,它是用于简化 MATLAB App 构建流程的开发环境。R2016a 还包含Simulink 的许多新功能,有助于加快模型开发和仿真速度,此外还提供其他所有产品的更新和修复程序。 MATLAB 实时编辑器提供一种全新方式来创建、编辑和运行 MATLAB 代码。在单一的交互式环境中并行显示结果和图形,以及产生它们的代码,加快探索性编程和分析的速度。现在,科学家和
[模拟电子]
MathWorks发布包含<font color='red'>MATLAB</font>和Simulink产品系列的2016a版本
利用MATLAB/Simulink在自动加速路上做了两件大事
自动驾驶是目前比较热门的话题,包含的技术领域五花八门,例如:雷达、摄像头、汽车电控、激光雷达、物体识别、高精度地图、导航技术等等。小编特邀 MathWorks 行业技术专家来聊一聊 MathWorks 这几年的自动驾驶之路,分享最新的技术投入和应用亮点。 ◆  ◆  ◆  ◆ MathWorks 对自动驾驶技术的投入可以总结为以下几个阶段: 2015:SCANIA AEB 系统 2015 年,瑞典著名的重卡生产商 SCANIA 发布了用 MATLAB/Simulink 设计的 AEB(自动紧急刹车)系统,看动画: 在这个案例中,SCANIA 利用 MATLAB/Simulink 做了两件大事: 一是设计了数据融
[汽车电子]
MATLAB环境中调用DLL对硬件资源访问的方法
    MATLAB是美国MathWorks公司开发的高性能的科学与工程计算软件,凭借其强大的科学计算和绘图功能、大量稳定可靠的算法库和简洁高效的编程语言,被科技工作者们广泛应用于自动控制、数学运算、信号分析、图像处理等各行各业。尽管MATLAB本身是一个完整的、自成体系的编程和数据处理环境,但由于语言的特性使其访问硬件的能力相对较差,这在一定程度上限制了它的使用。对于那些涉及复杂算法同时又需要对硬件资源进行访问的系统,一般的做法是在一个通用的编程平台(如Visual C++、Visual Basic、Delphi等)上实现对硬件资源的访问,而后调用MATLAB算法对数据进行处理。这种方法优点是通用性好,程序运行效率高,适用大多数
[测试测量]
在<font color='red'>MATLAB</font>环境中调用DLL对硬件资源访问的方法
飞思卡尔推出ADAS系统解决方案引领汽车雷达市场
新型微控制器和77 GHz雷达收发器芯片组帮助汽车制造商满足即将出台的强制安全标准,并使更多车辆受益于ADAS安全优势 2013年6月25日,德克萨斯州奥斯汀市 - 飞思卡尔半导体(NYSE:FSL)现已推出业界最全面的系统级解决方案,面向基于汽车雷达的高级驾驶员辅助系统(ADAS)。新型Qorivva MPC577xK微控制器(MCU)和MRD2001 77 GHz雷达收发器芯片组提供了经济的、基于雷达的ADAS解决方案所需的嵌入式技术,减少了组件使用,提高该解决方案在主流车辆中的采用。 美国国家高速公路安全管理局最近对其五星级安全计划提出了许多更改建议。这些建议预示着汽车制造商将很快需要加强措施保护出现碰撞时乘客的安全
[汽车电子]
<font color='red'>飞思卡尔</font>推出ADAS系统解决方案引领汽车雷达市场
Freescale MC9S12G128 GPIO
MC9S12G-Family Block Diagram 不同芯片封装端口: Port J相关寄存器 The PIM includes these distinctive registers: • Data registers and data direction registers for ports A, B, C, D, E, T, S, M, P, J and AD when used as general-purpose I/O • Control registers to enable/disable pull devices and select pullups/pulldowns on po
[单片机]
<font color='red'>Freescale</font> MC9S12G128 GPIO
飞思卡尔KL16时钟配置
引脚 EXTAL0:晶振入,XTAL0:晶振出 配置 MCG_C7的OSCSEL为0,选择外部晶振 所以MCG_C1的FRDIV需要取后面的值,例如8M晶振取011即256分频,结果为31.25khz,在PLL模式下,MCG_C1的FRDIV在晶振分频以后必须在31.25khz-39.625khz MCG_C6中PLLS说明,PLL应为2-4MHZ,则MCG_C5中的PRDIV0的数值被外部晶振频率除之后为2-4MHZ. MCG_SC中FCRDIV为快速时钟,外部晶振频率除以FCDIV的结果须在31.25KHZ-4MHZ
[单片机]
飞思卡尔智能车之舵机算法
这篇文章,我将会从舵机的控制策略来向介绍我的调试经历,供新手进行参考,尽量详细的记录我们调试一步一步变化的过程,坦白的说我们的车子最终跑的不是很好,原因是各个方面的。但是我认为我们遇到的问题对新手应该还是有些用处的,时间原因,我将会不定期更新,望谅解。(已完结) 前言: 想要控制舵机,就需要先了解舵机的工作原理,这一点前辈们的资料相当的丰富,大家可以先行学习一下。 然后因为我们组做的是光电组,所以就引入一些摄像头的一些名词,其他的组别也可以根据这个思路进行舵机调节,不影响学习(仅限赛道组,无赛道组例外) 阶段一: 刚刚入手舵机首要目标当然是理解它是如何工作的,控制原理很简单,这个了解了以后我们就开始想办法让他工
[单片机]
基于Matlab 的孤立逆变源的设计方案
基于Matlab软件平台,采用双环控制策略设计的逆变源,利用Matlab-Simulink-SimPowerSystems的工具箱进行建模仿真,验证了本文所设计方案的可行性和有效性。 0 引言 随着太阳能、风能等可再生能源的发展,分布式发电以其环境污染少、能源综合利用率高、供电可靠等优点,逐渐成为了各国家竞相研究的热点,在美国、欧洲等技术成熟的国家和地区,以将其广泛应用在微电网中。逆变电源作为一种有效的电力供应源,成为了微电网的重要组成部分,并在微电网的研究和实施中得到了广泛的应用。 本文设计的基于PWM 的孤立逆变电源,其控制模型采用电压外环和电流内环双环控制策略,电压外环和电流内环均采用PI控制方式。应用Matlab软件建立实
[电源管理]
基于<font color='red'>Matlab</font> 的孤立逆变源的设计方案

推荐帖子

基于ZigBee传输的粮库监测系统
2012TIC2000及MCU大奖赛,本科组,低功耗应用类,西安电子科技大学和基于ZigBee传输的粮库监测系统。欲知更多,请关注我的其他分享~~~基于ZigBee传输的粮库监测系统
德州仪器_视频 RF/无线
[本周话题]预测今年控制类会出什么样的题目呢?有福利!
控制类赛题从来都是电赛必有的一类。这几年控制类赛题不断变化。今年会出现什么新的技术?AI会不会出现?大家可以开开脑洞。万一猜中了呢!回帖都送3芯币!要是有人猜中了,小管送100芯币红包预测今年控制类会出什么样的题目呢?有福利!百分百有无人机控制的题目AI范围很广呀,智能肯定是有的。神经网络或者类似于siri那些可能还是比较低的,工作量太大了今年机器人控制可能会有 专业呀,你备赛进展如何啦?小车图像识别无人机已经属于一个大方向了智能定位相关13
高进 电子竞赛
请教这个三极管上拉电阻的作用
图中三极管做开关管使用,驱动蜂鸣器,但图中的R41的作用查资料说是上拉作用,给三级管提供一个确定电平,在这里有一个疑问,VCC会一直提供一个高电平导通三级管,三级管不是一直处于饱和状态吗?怎么进入截止状态啊。。。请教这个三极管上拉电阻的作用那边是做一个高电平补偿吧。 如果mcu给出的信号不确定,那么会一直输出高电平,蜂鸣器会一直响 如果mcu给出的信号不确定,那么会一直输出高电平,蜂鸣器会一直响 现在实物就是这个状况吗? 如果是的话这个上拉就可以去掉了,应该没什么影响
zhandizhandi 模拟电子
网通北京试推准IPTV
本帖最后由jameswangsynnex于2015-3-319:59编辑网通北京试推准IPTV2006-6-1410小区试点“宽频空间”宽带电视业务,网通称并非网络电视,专家称属于视频点播业务  发展IPTV业务一直是电信运营商和广电部门寻求新业务收入来源的目标。记者昨日从网通获悉,目前北京网通已在京城10个小区试推出“宽频空间”的网络电视(IPTV)业务。但网通表示,该项业务并不是真正意义上的IPTV,只是用户可以通过电视收看网通宽带提供的事前录制好的视频节目。
ehk 移动便携
根据板块一个老贴中整理的 一个读键思路
https://bbs.eeworld.com.cn/thread-454868-1-1.html这是原帖。这个帖子中提到一种新的扫描按键的算法(或者说思路吧)它虽然很简单,但是,它在获取触发状态的时候有一个很有用的意义:不需要另外清零。对这个帖子。我觉得首先写得有点长,比较罗嗦(呵呵,当然我也有这毛病)其次,其实就这种核心思路而言,并不需要实际硬件的掺和,只会让思路更乱。因为他的核心思路就在那三句代码。 unsignedcharTrg;unsignedcharCo
辛昕 编程基础
今天调了一天电路,终于在临下班调试成功了,但是原因很挫
今天调试了一天电路,本来很简单的工作,焊好板子,接上接口就OK了。结果搞得从电源查起,最终原因却是PCB上的一个小段铜丝断路了。做这块子的厂家,真是垃圾。我宝贵的时间啊。今天调了一天电路,终于在临下班调试成功了,但是原因很挫痛苦啊!原来也碰到过一次是一个过孔没做好那叫一个痛苦啊不过查出来就好了:carnation:毕竟查出来了,我还有没查出来的呢LZ,经验都是一步步积累的,折腾人的恰恰是我们最容易忽略的小事情。乐观了总比查不出来好慢慢来,有的时候过一个晚上
安_然 微控制器 MCU
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved