飞思卡尔智能车摄像头组黑线提取
飞思卡尔图像处理总结

图像处理算法总结一、简介根据第九届全国大学生“飞思卡尔”杯智能车竞赛要求,针对摄像头平衡组的车模要求,我们小组需要自主设计一辆两轮平衡直立的由摄像头自主识别路径并以较快速度行进的智能小车。
其中图像数据的处理是摄像头组能否取得好成绩的关键。
我们这次使用的是野火鹰眼ov7725硬件二值化摄像头(如图1所示),基于飞思卡尔K60单片机控制,并通过IAR6.3编译,编译界面如图2所示。
图1.鹰眼摄像头图2.iar编译界面二、设计要求对鹰眼摄像头采集回来的一副二值化的图像数据进行解压,图像处理,求出赛道中线和车体中心线的偏差,通过PID调节,将转向控制量返回,从而实现转向控制。
其中图像处理包括:黑线提取,赛道类型判断,计算转向偏差。
三、算法设计3.1 黑线提取我们采用的是跟踪边缘检测算法。
由于黑色的目标引导线是连续曲线,所以相邻两行的左右边缘点比较靠近。
跟踪边缘检测正是利用了这一特性,对直接边缘检测进行了简化。
其思路是:若已寻找到某行的左边缘,则下一次就在上一个左边缘附近进行搜寻。
这种方法的特点是始终跟踪每行左边缘的附近,去寻找下一列的左边缘,所以称为“跟踪”边缘检测算法。
该算法的优点:在首行边缘检测正确的前提下,该算法具有较强的抗干扰性,能更有效地消除垂直交叉黑色引导线的干扰,以及引导线外黑色图像的影响,始终跟踪目标引导线。
另外,与直接边缘检测法比较,跟踪边缘检测算法的时间复杂度更低,因此效率更高。
且通过多次试验,中心线提取基本没有出现大的问题。
如图3,为一次拍摄的赛道图像,经图像处理后将计算的中线显示在上位机上,图33.2赛道类型判断影响赛车速度成绩的一个重要因素就是对弯道和直道的提前识别判断,从而实现安全过弯,快速过直道、S弯道,以提高比赛成绩。
我们通过小液晶模块,或者摄像头上位机将拍回来的赛道图像反复仔细地对比查看,提取出相关的特征作为判断条件,从而完成赛道类型的判断。
另外,由于智能车上安装的摄像头相对于赛道存在一定的倾斜角度,因此会造成采集到的赛道图像具有一定的梯形失真,即图像中的赛道远端窄、近端宽,因而也会对路径的正确识别产生影响。
飞思卡尔智能车摄像头组新手指南(5)--让车跑起来篇

飞思卡尔智能车摄像头组新⼿指南(5)--让车跑起来篇舵机、电机控制策略让车跑起来彭岸辉控制器设置了快速的控制周期,在每个运算周期内,控制器即时地得到智能车车速以及传感器采样来的道路信号,经过控制算法的计算后,控制单元输出相应的前轮控制转⾓以及电机占空⽐的值,其输出值再经过函数映射关系转换为 PWM 脉宽信号传⾄前轮舵机以及驱动电机,从⽽实现⼀个周期的控制。
由于摄像头的信号是具有周期性的,可以直接采⽤摄像头采集⼀幅图像的周期作为控制周期。
舵机控制采⽤ PD 控制,控制跟随性较好,P可以及时对赛道的变化作出反应,当然舵机的 P 项值也是跟随赛道情况变化的,直道和较⼩的弯道时控制较弱,90 度弯道或 270 度⼤弯道控制量较强,D有预测道路类型的作⽤,也就是能使舵机提前打⾓。
电机控制采⽤ PID 控制,可以减⼩动态误差并且跟随性能较好。
当然也可以使⽤其他控制,很多⼈舵机采⽤P控制,电机采⽤PD或PI控制。
对⽐他们的优缺点⾃⼰选择适合⾃⼰⼩车的PID。
这⾥不进⾏深⼊讲解。
前⾯的⼯作完成后懂得基本的图像处理算法就差不多可以使⼩车跑起来了!要使⼩车跑起来其实不难的,很多初学者最希望的就是看⾃⼰的车跑起来,因为当初我也是这样的,很理解师弟师妹们此刻的想法!最基本的图像处理算法就是:图像中间往两边搜索⿊线注意:初学者在初学时不知道偏差是怎样计算的。
这⾥就提⼀下:偏差就是计算出的中线即图中赛道中的⿊线与摄像头所看到的中线即图中赛道中的竖直红线(例如采集到的图像是100列的,那么摄像头看到的中线就是50)做差得到的值就是偏差。
它表⽰车当前位置与期望位置的偏离程度。
再看个图吧:⽤两⾏来说明,其他的⼀样。
第⼀⾏左边坐标(0,1)右边坐标(0,99),得出的中线就是(0,50),那么50所在的那⼀列就是摄像头所看到的中线(就是图中竖直的红线)。
这⾥再提⼀下,很多⼈提出中线后发现上位机上或LCD上没显⽰出中线,其实显⽰出中线很简单的:根据RGB,⼀个像素点的像素值为255时显⽰出来的是⽩⾊,像素值为0时显⽰出来的是⿊⾊。
飞思卡尔智能车摄像头边线、黑线提取方法分析

飞思卡尔智能车摄像头边线、黑线提取方法分析
下面看一下CCD的信号提取
这是摄像头提取到的信号,如此看来是可以用阈值取线的方法的
然而实际的情况是很糟糕的比如这样
等等,这样的请款都是阈值所不能解决的,但上面的图线的一个显著特点就是有一个很夸张的边缘,这是一个明显的不能再明显的信息
如图所示
蓝色是图线,红色是微分,如此看来特征是很夸张的,我们可以很好的加以利用了
如果我们在微分一下特征会不会更明显呢?
蓝色是原图想,红色是微分,黄色是微分后再微分,如此看来,再微分已经没有什么明显的效果了,还是一次微分比较的好,
现在理一下思路,
第一步取图像
第二步微分
第三步求绝对值
第四步把一些小的值去掉
对于这样的东西我们就很很很容易处理了
但是我们还要注意这样的情况
即便是去掉了一些很小的信号但是还有一些稍大一点的信号这是值得关注的事情
注意:如果是线性ccd的话灰度值的平均水平有时会很低,为了好看可以采用软件放大的做法,个人认为加运放的效果不好,软件放大还可以加入一些智能的判断和操作,12位的AD转换进度完全够用,图像处理其实八位就完全够用啦。
基于黑白摄像头的智能小车路径识别系统设计

基于黑白摄像头的智能小车路径识别系统设计The Design of Intelligent V eh icle Path Recognition Based on M onochro m e Camera吴吟箫* 张 虹 王新生W U Y i n -x i ao Z H AN G H ong WANG X in -sheng do:i 10.3969/.j issn .1672-9528.2009.02.015摘 要路径识别是汽车智能化发展的必然趋势。
在基于飞思卡尔单片机的智能车路径识别系统的设计中,首先采用基于黑白摄像头的图像采样模块获取路径图像信息;然后分别说明图像采集,图像预处理,黑线提取,路径判断部分的软件设计。
其中,在图像预处理中使用了二值化和中值滤波算法,并且在黑线提取中提出了改进插值算法。
实验表明,整个系统硬件设计简单,软件算法快速有效。
关键词路径识别 中值滤波 寻线算法Abstract Inte lli gentize of vehic l e is a trend o f cars develop m ent in the future .P ath recogn ition i s one o fthe appli cation d i rections .Th is pa t h recogn iti on syste m of i ntelli g ent car uses i m age -sensor m odu l e based on ca m era to obta i n lane i m age i n f o r m ati on .The who le syste m i s d i v i ded into f our parts :i m age acqu i s ition ,i m age pre-pro cessi ng ,abstracting t he black li ne ,and road detec tion .The i m age pre-pro cessi ng part uses the b i nary zation and t he m ed ian filter i ng to i m prove the i m age i n f o r m ati on .Then by us i ng the i m proved a l go rith m,the resu lt of abstracting t he black li ne becomes m ore prec i se .The ulti m ate a i m of the w ho le syste m i s to accurate l y abstract the b l ack gu i de li nes fro m the wh ite race w ay ,f o ll ow i ng the road pa ra m e ters and conditi ons i n front ,m aki ng the car m ove prope rly .K ey word s R oad detecti on M ed i an filteri ng L i ne-tracking*哈尔滨工业大学(威海)信息科学与工程学院 264209基金项目:山东省自然科学基金(Y 2007G 20)1 引言智能化技术与汽车相结合产生的智能汽车将在未来工业生产和日常生活中扮演重要的角色,而路径识别则正是体现智能车智能水平的一个重要标志。
基于摄像头的智能车黑色虚线识别算法研究

基于摄像头的智能车黑色虚线识别算法研究程鸿芳;钱峰;李敏【摘要】针对“飞思卡尔”智能车竞赛的赛道由虚线组成的特点,提出一种提取智能车黑色虚线识别算法.该算法将是在改进的边缘检测算法和左边跟踪检测法的基础上,利用直线斜率和直线方程,把虚线跑道补实,来完成智能车赛道的信息采集.实际测试表明该方法能够实现路径识别的正确性和快速性,可在黑白(或色差较大)赛道上获得良好的自主寻迹效果.【期刊名称】《重庆科技学院学报(自然科学版)》【年(卷),期】2014(016)001【总页数】3页(P147-149)【关键词】摄像头;边缘检测;图像采集【作者】程鸿芳;钱峰;李敏【作者单位】芜湖职业技术学院,安徽芜湖241000;芜湖职业技术学院,安徽芜湖241000;芜湖职业技术学院,安徽芜湖241000【正文语种】中文【中图分类】TP393.08“飞思卡尔”杯全国大学生智能车大赛是由摩托罗拉旗下飞思卡尔公司赞助、由高等学校自动化专业教学指导委员会负责主办的全国性的赛事。
按照首届全国大学生“飞思卡尔”智能车大赛规则要求,根据赛道特点,主要有3种寻线设计方案:光电传感器方案、摄像头方案和电磁方案。
2011年第六届比赛中要求赛道是由白色底板和黑色的指引虚线组成,综合考虑3种方案的特点,本文采用的是摄像头方案。
在摄像头方案的前提下,在实时的图像数据获取的基础上对图像信息进行数据处理,从而提取赛道中心的黑色指引虚线,以此来作为舵机和驱动电机的控制依据。
以往的赛道中的黑色指引线是实线,而第六届比赛赛道是黑色的指引虚线,中间存在断点。
针对这种赛道,本文采用的方法是在改进的边缘检测算法和左边跟踪检测法的基础上,将虚线跑道补实,从而完成智能车的赛道信息采集。
由边缘检测算法和左边跟踪检测法得出的各行黑线的中心值center(i),纵坐标记为i;当检测遇到虚线时,将上一行实线的中心值center(j)弥补本次的中心值,横坐标记为center(j),这样虚线两边与实线交界点的坐标记为 (center(j1),j1)和 (center(j2),j2),求出这两点构成直线的斜率k和直线方程,即可算出虚线行的横坐标,来补足虚线。
飞思卡尔智能车电磁组分区算法介绍

飞思卡尔智能车电磁组分区算法介绍写在之前的话:1、⽬前我是⼀名在校学⽣,这也是我第⼀次写博客,不周之处,请多谅解;2、此算法并⾮原创,借鉴⾃⼭东德州学院第⼋届⽩杨队(PS:个⼈看法,对于⼀些⼈把别⼈的开源东西改头换⾯⼀下就说是⾃⼰的原创⾏为⼗分鄙视);3、对于此算法的理解和说明并⾮纸上谈兵,算法已经被我运⽤到了⼩车⽐赛中并取得好的成绩(具体就不多说了,⽐赛时车莫名其妙坏了,⽐赛前调试的速度绝对能进国赛,⽐较遗憾),总之这算法是我尝试过的最好的算法;4、这⼀次所介绍的只是路径算法和⼀些知识普及,后⾯有时间会介绍其余部分算法及许多好的思路(舵机电机控制思路(不只是简单的PID),双车策略);5、希望对于这⽅⾯有涉及的⼈能与我联系并交流或指出不⾜之处。
---------------------------------------------------------------分割线-----------------------------------------------------------------------------⼀、没有这⽅⾯了解的可以看看 飞思卡尔智能车分为三组:摄像头、光电、电磁,我做的是电磁车,三种车队区别在于传感器的不同,所以获得路径信息的⽅法也不⼀样,摄像头和光电识别的是赛道上的⿊线(⽩底赛道),⽽电磁车则是检测埋在赛道下的通⼊100mh电流的漆包线,摄像头和光电采⽤的是摄像头和ccd作为传感器,电磁则是⽤电感放在漆包线周围,则电感上就会产⽣感应电动势,且感应电动势的⼤⼩于通过线圈回路的磁通量成正⽐,⼜因为漆包线周围的磁感应强度不同,因此不同位置的电感的感应电动势就不同,因此就可以去确定电感位置;因此在车⼦前⾯设置了50cm的前瞻,电感布局如下(怎么发不了图⽚):分为两排,前排3个,编号0,1,2(前期还加了两个竖直电感⽤来帮助过直⾓弯,后来改为了⼋字电感);后排2个,编号3,4;现在车⼦获得了不同位置的感应电动势的⼤⼩了,但这些值是不能处理的:1、感应电动势太微弱;2、是模拟信号,信号太微弱就放⼤它;这就涉及到模拟电路的知识了,就不多说了(因为要把这讲完到PCB绘制的篇幅就⾜够写另开⼀号专门写这些⽅⾯来(PS:题外话(我的题外话⽐较多)):放⼤部分外围你设计的再好也抵不过⼀个更好的芯⽚,有两个例⼦,⼀个是我⾃⼰的:之前⽤的是NE5532,但是效果不理想,加了好多什么滤波,补偿,都⽤上,没⽤,软件⾥处理后⾯再说,后来⼀狠⼼换了AD620,感觉像是春天来了,因为它是仪⽤放⼤器,还有就是贵。
上海交大的飞思卡尔寻线算法

基于光电传感阵列和摄像头的寻线控制算法关军(上海交通大学机器人研究所上海200240)文摘本文,研究分析了分别基于光电传感器阵列和摄像头的寻线控制方案,通过评估比较两种方案各自具有的优势与不足,设计了一种基于两种传感器融合使用的寻线控制算法。
摄像头和光电传感阵列的混和使用,充分发挥了摄像头探测距离远,光电管信号可靠的特点,有效解决了摄像头在弯道行驶中丢失黑线的问题。
实践表明,该控制算法改善了赛车弯道行驶性能,提高了赛车寻线的可靠性。
关键词:摄像头;光电传感器;寻线控制;弯道识别A line-tracking control algorithm based on photoelectric sensor array and cameraGuan Jun(Research Institute of Robotics, Shanghai Jiao Tong University,Shanghai 200240, China)Abstract: In paper, we make a study on line-tracking control schemes based respectively on photoelectric sensor array and camera. Realizing that both schemes have their own advantages and disadvantages, we have designed a line-tracking control method which combines these two kinds of sensors. The use of camera and photoelectric sensor array together is able to make full advantage of the feature that camera could detect comparatively more distant and that photoelectric signal is more reliable, thus effectively solve the problem that the camera will miss the black line when turning. Experiments show that such method can improve the1performance of the vehicle when turning as well as the reliability of tracking.Key Word: Camera; Photoelectric sensor; Line-tracking control; Curve detecting寻线传感器的选择,是此次智能车竞赛需要首先考虑的问题。
飞思卡尔智能车摄像头组技术报告

第七届“飞思卡尔”杯全国大学生智能汽车竞赛技术报告(校徽)学校:*********队伍名称:******参赛队员:******************带队老师:******关于技术报告和研究论文使用授权的说明本人完全了解第七届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。
参赛队员签名:带队教师签名:日期:摘要本文以第七届全国大学生智能车竞赛为背景,介绍了智能赛车控制系统的软硬件结构和开发流程。
该比赛采用组委会规定的标准车模,以 Freescale 半导体公司生产的 16 位单片机MC9S12X128为核心控制器,在 CodeWarrior IDE开发环境中进行软件开发,要求赛车在未知道路上完成快速寻线。
整个系统涉及车模机械结构调整、传感器电路设计及信号处理、控制算法和策略优化等多个方面。
为了提高智能赛车的行驶速度和可靠性,对比了不同方案(如摄像头与光电管检测方案)的优缺点,并结合 Labview 仿真平台进行了大量底层和上层测试,最终确定了现有的系统结构和各项控制参数。
它采用摄像头对赛道进行检测,通过边缘提取获得黑线位置,用 PID 方式对舵机进行反馈控制。
通过速度传感器获取当前速度,采用增量式数字PID控制实现速度闭环,根据预判信息和记忆信息对速度进行合理分配。
同时采用拨码开关和LCD显示屏实现人机交互系统。
测试结果表明,在该控制系统下,自寻迹机器人小车具有良好的位置跟踪和快速切换速度性能。
关键词:智能车,跟踪寻迹,摄像头,传感器,PID,最优曲率ABSTRACTIn the background of the 7nd National Intelligent Car Contest for College Students, this article introduces the soft hardware structures and the development flow of the vehicle control system. This contest adopting the standard model car prescribed by the contest organization committee, using the 16-bit MCU MC9S12X128 produced by Freescale Semiconductor Company as the core controller, developing under the CodeWarrior IDE, requires the car track the line fast on the road. The whole system includes the aspects of the mechanism structure adjustment, the sensor circuit design and signal process, controlalgorithm and strategy optimization etc.In order to increase the speed and the reliability of the car, the advantage and disadvantage of the different schemes (such as the camera and photoelectric cell scheme) are compared, and a great number of the bottom layer and the upper layer tests are carried on combined with the Labview simulation platform. At last, the current system structure and each control parameters are determined. It captures the road information through a camera, then abstracts the black line position by edge-detection method. After that, PD feedback control is used on the steering. The system obtains the current speed using a speed sensor, so that it can realize the feedback control of the speed by the increased digital PID algorithm control method. At the same time, the use of an LCD displays trails information and keyboard is used to achieve the man-machine interaction. According to the pre-judge inform and the memorized inform, it allocates the speed properly. The test results showed that the self-tracing robot car had good position tracking and fast speed switching performance .Key words:intelligent vehicle,line track, camera,sensor, PID, optimal curvature目录第一章:引言 (1)1.1背景介绍 (1)1.2发展现状 (1)1.3章节安排 (2)第二章:系统整体框架 (3)2.1系统框架 (3)2.1.1硬件系统 (3)2.2.2软件系统 (4)2.2方案简介 (4)第三章:机械设计 (6)3.1汽车行驶的数学模型 (6)3.2整体布局与调整 (7)3.2.1车模分析 (7)3.2.2 车模布局思想 (8)3.3机械结构调整 (9)3.3.1前后轮定位 (9)3.3.2其他机械模块调整 (9)3.3摄像头的安装 (9)3.4舵机的安装 (10)3.5编码器的安装 (10)第四章:硬件电路设计 (12)4.1硬件设计方案 (12)4.2传感器的选择 (12)4.2.1摄像头 (12)4.2.2编码器 (12)4.3电路设计方案 (13)4.3.1单片机最小系统板 (13)4.3.2稳压模块电路 (14)4.3.3驱动模块电路 (14)第五章:软件系统设计 (16)5.1 软件各功能模块设计 (16)5.1.1 时钟模块 (16)5.1.2 PWM输出模块 (16)5.1.3 ECT模块 (17)5.1.4外部中断 (17)5.2视频采集与图像处理 (17)5.2.1摄像头工作原理 (17)5.2.2图像处理 (18)5.3路径识别思想 (21)5.4舵机转向和速度调节 (23)5.4.1PID控制算法介绍 (23)5.4.2舵机转向控制 (24)5.4.3速度控制 (25)5.4.4细节控制 (25)第六章:开发环境、调试工具 (28)6.1软件开发平台Codewarrior IDE (28)6.2辅助调试方法 (28)6.2.1 Labview调试 (28)6.2.2人机交互界面 (29)6.2.3无线模块 (29)第七章:结论 (31)参考文献 (32)鸣谢 (32)第一章:引言1.1背景介绍智能汽车就是一种无人驾驶汽车,也可以称之为轮式移动机器人,主要依靠车内以计算机系统为主的智能驾驶仪来实现无人驾驶。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(abs_1(Line_Center[i-1]-Line_Center[i])>5 ) //黑线是连续的值还需要确认即相差多少就认为是错误
{
temp=2*Line_Center[i-1]-Line_Center[i-2];
if(temp>RIHGT_LIMIT)temp=RIHGT_LIMIT;
{
Buffer[m][0]=PORTA; Buffer[m][n+0]=PORTA;
Buffer[m][1]=PORTA; Buffer[m][n+1]=PORTA;
Buffer[m][2]=PORTA; Buffer[m][n+2]=PORTA;
Buffer[m][68]=PORTA; Buffer[m][n+68]=PORTA;
Buffer[m][69]=PORTA; Buffer[m][n+69]=PORTA;
m++;
}
Image_binaryzation(m);
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
CLKSEL=0x00; //48mhz
PLLCTL_PLLON=1;
SYNR=0XC0 | 0X05;
REFDV=0X80 | 0X01;
POSTDIV=0X00;
_asm(nop);
_asm(nop);
while(0==CRGFLG_LOCK);//锁相环锁定
CLKSEL_PLLSEL=1;//选定外部时钟
Sቤተ መጻሕፍቲ ባይዱI0DRH=0;
SCI0DRL=sendchar;
}
//黑线的中值滤波
int get_mid(unsigned int a,unsigned int b,unsigned int c)
{
unsigned int x=0;
if(a>b){x=b;b=a;a=x;}
if(b>c){x=c;c=b;b=x;}
{
temp=Line_Center[i];
for(j=0;j<temp;j++)
{
SCI_Write(' ') ;
}
SCI_Write('1');
SCI_Write(0x0D);
SCI_Write(0X0A);
}
Flag=1;
}
void main(void)
{
/* put your own code here */
#define SAMP_ROW_MAX 280
#define THRESHOLD 0x20
#define ROW_START 1
#define ROW_MID 10
#define ROW_END 36
#define BLACK 0
#define WHITE 1
#define BLACK_LINE_MAX0 15
unsigned char Buffer1[ROW][COLUMN];
unsigned char SampleFlag=0 ;
unsigned char jiange;
unsigned int m=0;
unsigned int n=0;
unsigned int line=0;
unsigned char Flag=0;
if(a>b){x=b;b=a;a=x;}
return b ;
}
//求绝对值
int abs_1(int x)
{
if(x<0)x=-x;
return(x);
}
void black_extract(void)
{
unsigned char black_lost=0;//黑线丢失计数器
unsigned char stop=0; //停车圈数计数器
if(Buffer1[i][COLUMN-j]-Buffer1[i][COLUMN-j-1]>0)
{right=COLUMN-j;right_flag1++;}
}
//////////求黑线的中心
if((left_flag1==1) && (right_flag1==1))
{
if((right-left>=BLACK_LINE_MIN0)&&(right-left<=BLACK_LINE_MAX0)) //过滤过宽过细的黑线
unsigned int Line_Center[ROW]={20};
//--------------初始化函数----------------//
/*时钟初始化程序*/
void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
{ //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
{
if((*p_Image<THRESHOLD)&&(*(p_Image+1)<THRESHOLD))
*(q_Image++)=BLACK;
else
*(q_Image++)=WHITE;
}
}
void chuli(void)
{
unsigned char i,j;
int temp=0;
for(i=0;i<ROW;i++)
#define BLACK_LINE_MIN0 4
#define BLACK_LINE_MAX1 12
#define BLACK_LINE_MIN1 2
#define LEFT_LIMIT 1
#define RIHGT_LIMIT 69
#define CENTER 35
unsigned char Buffer[ROW][COLUMN];
/////图像后部分用边缘检测法
///////////////////////////////////////////////////
for(i=ROW_MID;i<ROW;i++)
{
left=0; //左右跳变清零,这是必须的!!
right=0;
for(j=10;j<=COLUMN-10;j++) //两边搜索最边界干扰略去
if(temp>RIHGT_LIMIT) temp=RIHGT_LIMIT;
else if(temp<LEFT_LIMIT) temp=LEFT_LIMIT;
Line_Center[i]=temp;}
}
}
////////////////////////////////////////////////////
}
//--------------行场中断初始化-------------//
void IC_Init(void)
{
TIOS=0x00;
TCTL4=0x09;
TSCR1=0x80;
TIE=0x03;
TFLG1=0xFF;
}
void IO_Init(void)
{
DDRA=0X00;
}
//----------初始化SCI0---------------------//
{
temp=2*Line_Center[i-1]-Line_Center[i-2];
if(temp>RIHGT_LIMIT) temp=RIHGT_LIMIT;
else if(temp<LEFT_LIMIT) temp=LEFT_LIMIT;
Line_Center[i]=temp;
}
}
for(i=2;i<ROW;i++)
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 8 Port0_Interrupt()
{
TFLG1_C0F=1;
line++; //行计数器加1
if ( SampleFlag == 0 || line<SAMP_ROW_START || line>SAMP_ROW_MAX )
else if(temp<LEFT_LIMIT)temp=LEFT_LIMIT;
Line_Center[i]=temp;
}
}
//黑线的中值滤波程序!
for(i=1;i<ROW-1;i++)
{temp=get_mid(Line_Center[i-1],Line_Center[i],Line_Center[i+1]);
unsigned char i=0,j=0,left=0,right=0,start_flag1=0,start_flag2=0;
unsigned char left_line=0,right_line=0,left_edge=0,right_edge=0;
int temp=0;
unsigned char left_flag1=0,right_flag1=0,left_flag2=0,right_flag2=0;
for(i=ROW_START;i<ROW_MID;i++)
{
left=0; //左右跳变清零,这是必须的!!
right=0;
for(j=5;j<=COLUMN-5;j++) //两边搜索最边界干扰略去
{
if(Buffer1[i][j]-Buffer1[i][j+1]>0)