通过对摄像头读入的路途白线图画进行灰度变换,再检测出白线的边际,这是完结智能车主动导航和辅佐导航的根底。行车道检测体系能够使用于智能车的防撞预警和操控。该体系规划重点是边际检测电路的规划。边际检测电路包含图画输入缓冲电路、笔直方向的边际检测电路、水平方向的边际检测电路及对两部分检测的组合,终究通过阈值挑选构成二值边际图画。传统的计划大多选用单片机电路完结,规划流程和体系调试都比较繁琐,开发周期长。在实时图画处理中,因为处理速度要求较高,因而用曾经的办法很难到达要求。实时图画处理常常需要对图画进行求和、卷积、边际提取、图画切割及特征提取等不同品种、不同层次的处理。关于一些运算结构简略,但要处理很多数据的算法一般选用FPGA芯片来完结。通过FPGA完结信号处理能够获得超卓的体系稳定性,进步操控精度,还能够大大削减开发周期,使规划人员的规划自由度加大。本文选用Altera公司的Cyclone EP1C6作为主控芯片,运用Altera公司推出的数字信号处理开发东西DSP Builder作为规划渠道,通过DSP Builder SignalCompiler模块读取由DSP Builder和MegaCore模块构建的Simulink建模文件(.mdl),生成VHDL文件和东西指令言语(Tcl)脚本,进行归纳、硬件施行和仿真,然后完结对整个路途边际检测体系的规划。
1 体系构成及边际检测原理
本体系中的首要模块是进行二维卷积操作的sobel边际检测模块,它相当于硬件的协处理器。该体系从CF卡读入数据到边际检测模块,运用 Nios II操控数据流,选用DMA操控器在外部存储器(SDRAM和SRAM)之间传递数据,这些外部存储器相当于中心图画数据缓冲器。体系结构如图1所示。
边际是指图画中像素灰度有阶跃改变或房顶状改变的那些像素的调集。它对图画识别和剖析非常有用,边际能勾划出方针物体概括,使观察者一望而知。边际包含了丰厚的信息(如方向、阶跃性质 、形状等),是图画识别中抽取的重要特点[1]。微分运算有加强高频重量的效果,然后使图画概括更明晰。关于数字图画,微分可用差分近似替代,沿x和y方向的一阶差分可别离标明如下:
一阶差分增强是有方向性的。为了增强图画中心任何方向扩展的边际和概括,期望对图画的某种导数运算是各向同性的,而梯度运算恰具有各向同性特性。关于图画f(x,y)点上的梯度可定义为矢量:
梯度起伏具有各向同性或旋转不变性,而且给出了该像素点灰度的最大改变率。选用微分锐化图画,会使噪声、条纹等得到增强,这在图画处理中会构成伪边际和伪概括,为此对锐化算子进行了各种改善。Sobel算子便是其间一例,它在必定程度上克服了上述问题。Sobel算子的基本思想是:以待增强图画的恣意像素(i,j)为中心,截取一个3×3的像素窗口。别离核算窗口中心像素在x和y方向上的梯度[2]。Sobel算子的表达式如下:
Sx=
增强后图画在(i,j)处的灰度值为:
2 依据FPGA的DSP Builder规划流程
Altera DSP Builder将The MathWorks MATLAB和Simulink体系级规划东西的算法开发、仿真和验证功用与VHDL归纳、仿真和Altera开发东西整合在一起,完结了这些东西的集成。规划人员能够运用DSP Builder模块敏捷生成Simulink体系建模硬件,通过DSP Builder SignalCompiler模块读取由DSP Builder和MegaCore模块构建的Simulink建模文件(.mdl),生成VHDL文件和东西指令言语(Tcl)脚本,进行归纳、硬件施行和仿真。
此体系规划首先用MATLAB树立DSP电路模型。电路模型规划完结后,就开端进行体系功用的仿真,这是归于体系级而且依据算法的仿真,与方针器材无关。然后运用置于Simulink电路模型界面的DSP Builder中的Signal Complier将电路模型文件即Simulink模型文件(.mdl)转化为RTL级的VHDL代码表述和Tcl脚本。一旦获得了VHDL描绘,就能够在Simulink中调用Quartus II中的归纳器生成网表文件。下一步便是调用Quartus II中的编译器,依据网表文件及设置的优化条件进行布线布局和优化规划的适配操作,一起生成用于Moldelsim的时序仿真文件。将最终生成的 Programmer Object File(.pof)对方针器材进行编程装备,即可在硬件上构成DSP体系。
3 边际检测体系的Simulink模型规划
Sobel边际检测模块包含独立且并行的水平检测和笔直检测两部分。输入缓冲通过一组延时线路转化输入的像素值。线路缓冲器的缓冲级数由图画的宽度决议。本规划选用的图画宽度是640。缓冲器的个数取决于卷积核的巨细,本规划选用3×3的Sobel卷积核。笔直和水平方向的边际检测几乎是相同的,两者之间的区别只在于从输入缓冲器流过的数据流。最终将两部分组兼并通过阈值挑选构成一幅通过边际检测的二值图画。Sobel边际检测是流水线操作,在每一个时钟周期都核算得到一个像素值,如图2所示。图中,Z-640是指本规划输入的图画像素宽度是640,右上角的加法模块完结的是笔直方向的边际检测,右下角的加法模块完结的是水平方向的边际检测。关于一般的灰度图画, 其像素的灰度值一般用8位标明,考虑到核算过程中或许呈现负数和溢出问题。因而,数据在开端核算前先在最高位补零,使数据宽度变为10 位,核算完结后可再裁剪为8 位。
在DSP Builder中规划的Sobel边际检测体系如图3所示。
4 仿真成果
树立了.mdl文件之后,在Simulink中对其进行体系算法级仿真。设置Matlab各项参数和Simulink仿真参数,因为本规划选用图片的像素是640×480,所以设置仿真时刻为307 201s(一切的像素数量加1)。
测验标明,仿真成果符合要求,整个体系算法级规划是正确的。图4为原始的五颜六色图画,图5为通过水平边际检测和笔直边际检测后没有通过阈值选取的图画,图6为通过阈值选取后的二值图画。Sobel算子不像一般梯度算子那样用两个像素的差值,而是选用两列或两行像素灰度加权和的差值来标明,因而有以下两个长处[4]。
(1)因为引入了均匀要素,因而对图画中的随机噪声有必定的滑润效果。
(2)因为它是相隔两行或两列之差分,故边际两边的元素得到了增强,边际显得粗而亮。
运用Modelsim进行功用仿真,首要是调用.tcl 文件对RTL 级的VHDL 代码仿真。因为Simulink 的仿真是算法级的,而此仿真是针对硬件结构的,两者之间或许存在软件了解上的差异,所以对RTL 级VHDL 代码的仿真是必要的。仿真成果和体系级仿真共同。编译生成.pof 文件,下载到方针芯片中,然后完结整个边际检测模块的规划。
参考文献
[1] 贾永红.核算机图画处理与剖析[M].武汉:武汉大学出版社,2002.
[2] 李弼程,彭天强,彭波.智能图画处理技能[M].北京:电子工业出版社,2004.
[3] 潘松,黄继业,王国栋.现代DSP技能[M].西安:西安电子科技大学出版社,2003.
[4] 刘禾.数字图画处理及使用[M].北京:中国电力出版社,2005.