基于FPGA的铁轨检测算法设计与研究

发布者:温馨的家庭最新更新时间:2011-09-27 来源: 微型机与应用关键字:图像处理  铁轨检测 手机看文章 扫描二维码
随时随地手机看文章
   

摘  要: 介绍一种基于FPGA的铁轨检测方法,包括嵌入式图像处理系统的硬件平台搭建和基于FPGA的图像处理算法的研究。采用基于FPGA的软核技术,完成图像增强和复原、边缘检测、阈值分割、连通域搜索等图像处理基本算法,实现在图像中完成铁轨区域的提取。
关键词: FPGA;嵌入式系统; 图像处理;铁轨检测

1 基于FPGA的嵌入式系统开发流程
 设计一个嵌入式系统,主要包括硬件平台搭建和应用软件编写。基于FPGA技术,硬件平台搭建和软件编写都可在相应的软件平台上完成。EDK(Embedded Development Kit)是Xilinx公司开发嵌入式系统的套件工具。EDK套件工具主要包括硬件平台产生器、软件平台产生器、仿真模型生成器和软件编译调试等工具,利用其集成开发环境XPS(platform studio)可以方便地完成嵌入式系统的开发设计[1],设计流程如图1所示。

2 硬件平台搭建过程
 分析系统需求中,铁轨检测主要是进行图像的分析处理,包括三个主要部分:图像输入、图像处理和结果显示。本项目使用依元素公司生产的Xilinx Spartan-3a系列xc3s700a的FPGA开发板,软件版本为Xilinx10.1。图像输入有下列途径:USB接口、RS232串口、100 M以太网接口、EDK套件XMD调试平台直接下载等。本文将图像数据转换为.ELF文件格式,直接烧写入Flash中。本文不追求实现视频流处理,并且图像要多次使用,源图像存储在Flash中最合理。图像处理由Microblaze软核系统和检测程序共同完成;图像显示由TFT控制器通过VGA输出信号在液晶显示屏显示。具体硬件平台搭建过程如下:
 (1)按照XPS应用向导,建立最小系统,配置Microblaze软核系统参数和添加UART外设。
 (2)添加IP核,并连接到相应总线,主要为内存控制器、通信控制和GPIO等。
 (3)添加自定义的IP。尽管Xilinx提供了许多免费IP,但是免费的IP不能满足用户的所有设计。本项目需要自定义的IP有用于控制液晶显示的TFT_Controller和用于内存地址总线及数据总线复用的Mux_logic IP。PLB_TFT_Controller主要产生RGB信号、行场扫描、同步信号等,Mux_logic IP用于对SDRAM和Flash总线复用进行控制,输入为SDRAM和Flash的控制IP产生的地址总线信号和数据总线信号及使能信号,输出为复用地址总线、数据总线信号。
 (4)配置相应IP,并进行信号互联,将需要控制硬件的port连接到外部。分配地址空间,添加UCF配置文件。
 (5)生成硬件比特流文件和硬件驱动文件。硬件结构原理图如图2所示。

3 软件设计过程
3.1 铁轨检测原理

 


 本项目中铁轨检测主要考虑两种方案[2]:基于边缘特征和基于区域特征。(1)基于边缘特征检测方法先在全局范围检测出边缘线,再通过模型或特征限制条件,从边缘图中获得目标边缘。(2)基于区域特征的铁轨检测,利用区域统计特性,即铁轨区域区别于周围环境独特统计特性来判断铁轨区域。两种方法中,前者检测到的铁轨线较为准确,但是其对二值化阈值严重依赖;后者抗噪性较好,但检测的铁轨线不够准确,本文主要讨论基于区域特征的铁轨检测。
 基于区域特征铁轨检测流程如图3所示,分为四个步骤:

 (1)降低分辨率。在滤波之前,先降低图像分辨率,以消除图像细节,也可减轻后续处理的计算负担。
 (2)滤波处理。分辨率降低后,图像中仍有很多的突兀点,这是因为铁轨上各种电磁信号的存在,摄像头采集到的图像不可避免地受到高斯噪声、系统噪声的污染。考虑到图像特征,选用中值滤波,它在平滑脉冲噪声方面非常有效,同时可以保护图像尖锐的边缘。
 (3)边缘提取。利用边缘检测算子检查每个像素的邻域并对灰度变化率进行量化,包括方向的确定。Sobel边缘检测算子方向性灵活,可以设置不同的系数,抑制噪声效果较好,使用范围广泛,因此选用Sobel算子。同时铁轨图像横向变化不大,而在纵向有很大的延伸,故也只考虑图像垂直边缘响应。
 (4)连通域搜索。二值化处理后边缘图包含了铁轨信息,也含有很多非铁轨边缘。使用八连通区域搜索法,进行标号处理,记录相互独立的连通区域个数并进行标号。对连通区域按照长度大小进行排列,直到搜索出纵向最长的两根铁轨,然后判断并标记左右两铁轨,之后进行区域填充,最终可以看到标记的铁轨区域。[page]


3.2 OpenCV仿真结果
 本项目程序首先实现OpenCV仿真,然后移植到FPGA中。OpenCV提供的图像处理算法非常丰富,并且部分程序以C语言编写,处理得当,不需要添加新的外部支持就可以完整的编译连接生成执行程序进行算法移植。本次仿真只运用“cv.h”和“highhui.h”两个OpenCV库,主要是运用其图像加载、图像显示等函数,而中值滤波、边缘检测、铁轨搜索函数自行编写。仿真结果如图4所示。

3.3 FPGA程序移植过程
3.3.1 图像输入与显示[3]

 本项目把图像数据转换为.ELF文件格式,烧录到NOR-Flash,在XPS的菜单下点击Program Flash Memory,选择自动格式转换,即可进行烧录,而且可以指定烧录数据的位置。数据格式转换利用Matlab软件完成,程序如下:
fid = fopen(′pic.elf′, ′w′);//打开文件
img =imread(′Image03.BMP′);//读图像数据
imshow(img);//显示图像
fwrite(fid,img.′);//写数据
fclose(fid);//关闭文件
 由于是灰度图像,只读取其亮度值。图像分辨率为640×480。写数据可以用fprintf函数或fwrite函数,但是实验表明使用fprintf函数写数据,文件大小302 kB,显示图像不正常;而使用fwrite函数写数据文件仅300 kB,显示图像正常。说明两种函数写数据方式本质不同,造成写入数据格式不同。
 图像显示过程:先从Flash中每次一行把数据读入BRAM,然后把每一位亮度值移位变为R、G、B三位,再从BRAM读数据到SDRAM显存,如此循环480次,用以显示图片。由于R、G、B值相同,显示的便是灰度图像。如果直接从Flash读数据到SDRAM显存,显示图像每行有不规则不连续的黑点,甚至显示不正常。显存的设置在TFT-Controller IP中完成,显存空间为2 MB,起始地址与SDRAM起始地址相同。
3.3.2 图像处理程序移植[3]
 由于开发环境不同,移植后程序在独立系统上运行,需要对OpenCV仿真程序做一些改正。FPGA编程系统支持C语言标准库函数,所以打印输出显示函数print()、动态内存分配函数malloc()可以直接使用。尽管printf()函数也可以用于打印输出结果,但目的是把程序放入大小为32 KB的BRAM,实验表明它比print()函数占用空间大一倍。在OpenCV中,可以直接使用cvShowImage()、cvReleaseImage()、cvDestroyWindow()函数显示图像和释放内存空间,在移植程序中要自行设计这些函数。移植程序中subplot()函数用于在屏幕上显示4幅图像(降低分辨率源图像、滤波图像、阈值分割图像、铁轨检测图像),DeleteAllPointElems()函数用于释放内存空间。其他函数,例如降低分辨率函数Dec()、滤波函数filter()、边缘检测函数edge(),可以完全使用OpenCV中的程序,不需要做修改。移植后主程序如下:
int main()
{ print("\\r\\n-- Entering main() --\\r\\n");
      SourceImage=(Xuint8*)malloc(640×480);
  DecImage=(Xuint8*)malloc(320×240);
  FilterImage=(Xuint8*)malloc(320×240);
  EdgeImage=(Xuint8*)malloc(320×240);
  ResultImage3=(Xuint8*)malloc(320×240);
//为图像分配内存空间
if (SourceImage==NULL)
  {print("\\r\\n--mem allo fail--\\r\\n");
  exit(1);}//验证空间是否分配成功
  XTft_Initialize(&Tft, TFT_DEVICE_ID);
  //TFT显示初始化
XromTftTestColor("black", 0);
//显示背景设置为黑色
flbuf=(unsigned char*)Flash_BASEADDR;
//设置Flash图像基地址指针
p=SourceImage;//设置源图像指针
for (y=0;y{rowpoint1=flbuf+y*WIDTH;
  for(x=0;x  {data1=*(rowpoint1+x);
       *p++=data1;
    } }//读源图像数据
dec(SourceImage,DecImage);
filter(DecImage,FilterImage,320);
edge(FilterImage,EdgeImage,320);
 //图像降低分辨率、滤波、边缘化
nt areanum=0;
GetFeature(EdgeImage,320,240,
ConnLabel,pFeatures,&areanum);
//边缘提取,搜索连通域
 GetRailArea(320,240,pFeatures,
areanum,lowLeftRail,lowRightRail);
//搜索铁轨区域,获得左右轨
 int i, j;
 for (i=1; i <= areanum;i++){
 DeleteAllPointElems(pFeatures[i]);}
 //释放内存空间
int Left,Right;
for(i=1;i<240; i++){
 Left=lowLeftRail[i];
 Right=lowRightRail[i];
 if((Left>0)&&(Right>0)){
 for(j=Left;j<=Right;j++){
*(TrackImage+i*320+j)=255;}}}
 //填充铁轨左右轨之间区域
subplot(DecImage,1);
subplot(FilterImage,2);
subplot(EdgeImage,3);
subplot(TrackImage,4);
 //显示4幅处理图像
print("-- Exiting main() --\\r\\n");
   }
 FPGA图像处理结果如图5所示。

 本文实现基于FPGA的铁轨检测算法,首先完成OpenCV程序仿真,然后移植到FPGA构建的硬件系统中,可以成功检测出铁轨所在区域,并在一定条件下进行铁轨智能延长。研究结果表明,检测一幅分辨率为640×480图像,大约需要30 s,如果应用于实时视频流系统中,则硬件平台设计需要进行精简,以提高速度。也可考虑基于硬核、多核技术,来提高处理速度,以满足实时视频流处理。

关键字:图像处理  铁轨检测 引用地址:基于FPGA的铁轨检测算法设计与研究

上一篇:FPGA低功耗设计的小提示
下一篇:基于FPGA的时钟设计

推荐阅读最新更新时间:2024-05-02 21:36

基于DSP和CPLD的智能相机系统设计与研制
  0、 引言:   在工业生产中,生产设备的自动化程度在很大程度上决定着生产的效率。同时,高技术高科技的生产设备,对提高的档次也有很大的作用。在工业生产现场,有许多工作是重复简单的劳动,或工作环境是不适合人进行处理的。这时,可以设计一种智能仪器,代替人进行这种简单重复的工作或在恶劣的工作环境下进行工作。智能相机系统就是这样的一种自动化仪器。它以其工作效率高、性能稳定、能适合复杂和恶劣的工作环境而越来越受到工业生产的重视。本文将介绍一款用于工业生产现场产品质量控制的智能相机的设计方案,并给出该相机的实际工作情况。   1、系统整体设计:   进行相机系统设计,首要考虑的问题是工业现场生产速度和相机处理速度的匹配问题。系统
[嵌入式]
基于DSP和CPLD的智能相机系统设计与研制
Nvidia高端图像处理器的市场机遇
未来几年内,集成图像芯片组市场将逐渐减小并最终消失。但在短期内,Nvidia的新款图像处理器将存在一个机会,该处理器可以与英特尔的Penryn处理器协同工作。Nvidia声称,同使用英特尔自己的集成器件相比,这个组合提供五倍的图像性能。 从2009年晚期开始,英特尔与其竞争对手AMD都将推出带有嵌入式图像内核的CPU,以便在改善某些笔记本电脑图像处理的同时节省空间和功率。这个举措显示了PC处理器发展蓝图的一个历史性转折。 在今后的两年里,这两家公司都将提供面向更多种类的桌面和笔记本电脑的芯片。在这些处理器被广泛采纳之前,作为PC芯片组的一部分,集成了IO控制器的图像内核依然存在重要、但逐步缩小的机会。
[嵌入式]
基于电源监控芯片的DSP图像处理系统设计
  电源在所设计系统的设备中可以说是最简单的器件,但却必须放在整机设计的最后考虑。为了保证整机的可靠运转,对供电系统的要求越来越高。   在高速电路板中,例如视频处理卡,由于电路的高频特性,开关的电磁辐射和线路噪音都会干扰到达电路器件电压,即器件的实际工作电压。而现今的低电压、低功耗、高性能的芯片,如DSP芯片等对工作电压的要求非常高,一般都要求电压偏差不超过5%,若芯片的供电电压为3.3V,即电压偏差不能超过0.165V。否则,一旦工作电压超出这个范围,长时间工作容易缩短寿命甚至于烧毁。因此,在电路中需要通过电压监控电路来实现对电压的实时监控,以期电源能够为芯片提供合格而稳定的电压。    TI公司TPS330X系列电源监
[嵌入式]
基于数字图像处理技术的岩石节理宽度测量
岩体节理裂隙宽度的测量在地质勘探、矿山工程、公路铁路建设和核电工程等诸多工程领域都有广泛的应用。但是由于裂隙形成原因的多样化,给它的测量与研究带来了极大难度。一种最简单的测量宽度的方法,就是用卡钳(测径仪)来测量节理裂隙二侧岩体断裂面的垂直距离。这种方法受人为因素和仪器精度的影响很大,结果不稳定且数据不精确。而对于岩体微裂隙的测量来说,则只能在显微镜下进行。一般采用的方法是:首先对对象岩体取样,并从中采集数字图像信息,然后沿用传统的人工测量方法,对图像中的目标物体进行测量,最后得出测量结果。这种方法只是在数据采集时提高了精确度,但在测量过程中由于缺少对现有图像分析技术的应用,测量结果并不理想。目前常用的图像分析技术主要是一些图
[测试测量]
基于数字<font color='red'>图像处理</font>技术的岩石节理宽度测量
三年前杨向阳投了家AI成像公司 创始人曾在中兴通讯任职
◆ 琢磨成像技术久了,朱继志对光线也十分敏感。 文| 铅笔道 记者 邵毛毛 3年前,当成立眼擎科技时,朱继志并未预料到如今AI大爆发的局面。 那时,他的想法很简单——从技术上解决图片成像问题,公司的主要业务是研发eyemore成像引擎。 他这样解释自己的目标:“比如自动驾驶应用中,每个车要安装十多个摄像头来采集图像数据。但若采集的图像质量存在问题,势必影响后续的分析处理。我们想让图像采集装置不受弱光、逆光、强光等各种光线环境的影响,始终稳定输出高品质的视觉图像信息。” 3年过去,目前团队已实现成像引擎的感光能力优于人眼,并将其落地为芯片。过程中,项目已完成Pre-A轮融资,此前天使轮投资人为杨向阳。 如今,恰
[嵌入式]
三年前杨向阳投了家AI成像公司 创始人曾在中兴通讯任职
安防应用中图像处理难点分析及处理器选择
引言 随着人们对生活质量要求的提高和全球反恐的大势所需,以及数字化技术本身的不断进步,依托指纹识别、虹膜识别、人脸识别等技术的生物识别方案和视频监控方案等正逐步成为提高个人、家庭、企业和社会安全性的重要手段。生物识别方案主要包括四个步骤:图像采集、图像预处理,特征取样,匹配分析;而视频监控方案则主要包括图像采集、图像预处理、图像处理与传输、图像显示及图像管理等。不难看出,无论是生物识别还是视频监控,图像预处理都是必需的。事实上,图像预处理算法的灵活度、复杂度、对图像处理芯片资源的占用度,以及处理时间的长度将直接对整个系统运行产生举足轻重的影响。因此,图像预处理对于整个安防方案来说都是一项艰巨而又关键的任务,直接决定了
[安防电子]
基于图像处理的铁路沿线视频监控算法设计
  0 引 言   近些年来,在很多涉及生命财产安全的行业中,安全监控越来越引起人们的重视。铁路行业的安全监控一直以来是铁道部和国家关注的重点项目,随着我国火车的不断提速,安全问题不容忽视,如何保证行车安全和行人安全直接关系到整个铁路行业的发展。   本文设计的铁路沿线视频监控方法是通过一种基于视频图像处理实现对于行人穿越铁路线的监控。当被监视区域中出现目标后可以自动报警并且存储相应的故障照片,为事后的工作提供可靠的依据。算法设计的最大特点是提出一种以图像处理为核心的安全监控设计,通过图像处理可以自动判断有无危险情况发生并自动报警,特别是在监控人员不在时能够发挥很大的作用。    1视频监控系统中背景的提取   背景图像是
[嵌入式]
基于DSP的数字图像处理系统中的抗干扰设计
  0. 引言   随着人类文明的进步和电子科技的快速发展,视频通信作为人类视野的延伸,被广泛应用于各行各业。应运而生的数字图像处理技术也就得到了飞速地发展。目前,由于运算速度快、片上资源丰富和能够实现复杂的线性和非线性算法等原因,DSP已成为通信、计算机和消费电子产品等领域的基础器件,其中在数字图像处理技术中显得尤为突出。然而,由于包括DSP本身在内的所有电子器件都是干扰源,而且系统所处的工作环境中还有很多外界干扰源,再加上数字图像处理技术对信号噪声非常敏感,所以在系统设计中必须考虑系统的抗干扰问题。否则,至少会影响系统的处理结果,甚至造成更为严重的后果。本文就是介绍基于DSP的数字图像处理系统中的抗干扰设计。   1. 系
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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