基于TMS320C6711B DSP的中心定位算法设计
地平仪是卫星姿态控制系统的关键子系统,其测量精度和可靠性直接关系到卫星姿态是否精确和稳定。本文利用TI公司的DSP芯片TMS320C6711B(简称C6711)实现了中心定位的相关算法。 1 实时图像处理系统的硬件构成 本系统以C6711为核心,辅助以现场可编程门阵列FPGA及高速A/D等器件构成实时高速数字图像处理系统。系统硬件框图如图1。该图像处理系统的工作原理是:由CCD采集输出的模拟图像信号,经过高速A/D将模拟信号转换为数字信号。数字图像信号在FPGA控制下,将数据不断输入至双口RAM。每当一帧图像扫描结束时,FPGA提供一个中断标志信号,触发DSP进行数据搬移,将双口RAM中的一帧图像通过C6711的QDMA搬移到SDRAM中。QDMA将数据搬移完后检查图像数据是否有效,如有效则触发DSP执行图像处理程序,否则返回等下一个中断到来。DSP在下次中断到来之前处理完本帧图像,将得出的姿态角信息通过多通道缓冲串口McBSP输出给电脑PC机RS232口并显示,之后又进入中断等待状态,等待中断再次触发QDMA进行数据搬移。 1.1 C6711数字信号处理器 C6711是TI公司的高速浮点DSP芯片,主频为150MHz,最高能达到900MFLOPS的峰值运算能力。C6711由CPU内核、片内外设和存储器三大部分组成。处理单元采用高性能、先进的VelociTITM结构,每时钟周期8个功能单元可并行工作。C6711具有特别适合实时图像处理的特点: (1)先进的VelociTI超长指令字C67xDSP内核; (2)硬件支持IEEE标准的单精度和双精度浮点指令; (3)32位外部存储器接口(EMIF),提供与同步、异步存储器的无缝接口; (4)两级缓存结构,其中:程序缓存32Kbit,数据缓存32Kbit,二级缓存512Kbit; (5)增强型DMA控制器,共16个独立通道。 1.2 A/D变换 由CCD输出的模拟图像信号,经过高速A/D将模拟信号转换为10位数字图像信号,在FPGA的控制下存入双口RAM存储器,供DSP处理使用。 1.3 电源模块和监控复位电路 C6000系列DSP需要两种电压,分别为CPU内核电压和周边I/O接口电压。C6711需要3.3V和1.8V两种电压,并且要求两种电源满足一定的加电顺序。本系统采用两者同时加电的方式。根据系统的功耗要求,分别采用芯片TPS54316和TPS54314直接产生3.3V和1.8V两种电压,它最大可提供3A的供电电流。电源监控和复位电路采用TI公司的TPS3307-33实现,它可以同时监测三个独立的电压3.3V/5V/1.8V,并且被监测的三个电压有一个低于其门限值时,就可以保证输出有效的 信号,使DSP复位,当它们的值都高于门限值时, 信号才变为高电平。 1.4 时钟模块和JTAG接口
25MHz时钟信号经过ICS501倍频后,产生150MHz和100MHz时钟信号,经三态门总线缓冲器74LVTH125输出后得到CPU工作时钟及同步接口所需的工作时钟。C6711的7个JTAG仿真脚 、TMS、TDI、TDO、TCK、EMU1和EMU0连接到一个14脚双排插头上,可与仿真器相连,以进行系统调试和程序下载。 1.5 外部存储器设计 C6711访问外部存储器必须通过EMIF。EMIF不仅有很高的数据吞吐率,而且还有很强的接口能力,可以与目前所有类型的存储器直接接口。设计采用三种类型的存储器:Flash ROM、双口RAM和同步动态存储器SDRAM。Flash ROM 是现场可擦除、掉电后可保持数据的存储器,用来固化程序和保存掉电后需要保存的数据;双口RAM用来存储一帧图像数据;SDRAM运行速度快,用来存放实时运行程序和临时数据。本系统Flash ROM采用SST39VF040,且配置在CE1空间。双口RAM采用IDT70V28,且配置在CE2空间。选用HY57V653220作为SDRAM,配置在CE0空间,这样的配置与引导方式相配合。 1.6 输出电路 系统根据输入的图像,由C6711进行处理后得出一个卫星姿态角信息。该姿态角信息由C6711输出到PC机的RS-232口,由于通信的信息量少,所以可以利用C6711的多通道缓冲串口McBSP,在不扩展其他硬件的情况下,用软件实现异步数据传输格式。发送时,发送转换子程序把每一个数据位扩展成16位的UART字,并把这些已转换好的数据块放入发送缓冲区,同时在适当的地方加上起始位和终止位(如图2所示),然后EDMA把数据从发送缓冲区传给McBSP,而McBSP帧同步发生器负责连续地移出这些数据[4];接收时,EDMA从McBSP读入已经扩展过的数据,并把这些数据写入接收缓冲区,然后再调用压缩子程序把数据转换成原来的字节形式。这种方法的优点是硬件接口简单,只需增加一个CMOS电平与RS232电平的电平转换电路。 2 图像处理算法的实现 中心定位图像处理算法设计以输入图像格式320×240像素、1024灰度级/像素为基础,包括滤波、判断地平圈是否进入视场、边缘检测和精确定中心几个部分。 2.1 滤波 探测器可能存在小于1%的坏单元,其灰度值主要为0或1023,坏元区范围小于3×3。坏元的存在有可能对边缘检测带来误差,再加上采集到的图像数据信噪比较低,所以采用二维中位数滤波[5]。其做法是:对于一帧图像,采用从上到下、从左到右的方法,移动3×3的窗口,在每一个位置,将有9个图像像素出现在窗口中,对这9个像素灰度值进行排序,使用快速排序法找到处于正中的像素值,把这个值赋给3×3窗口的中心像素。使用这种方法可以有效滤除区域不大于2×2的突发性干扰,从而提高算法精度。 2.2 判断地平圈是否进入视场 当卫星初始进入轨道时,在地平仪初始状态下可能探测不到地球,这时需启动搜索程序控制卫星偏转以搜索地球。因此,必须对所得的地平圈图像采用逐行扫描的搜索方法以判断地球是否进入视场。 2.3 边缘检测 边缘提取首先检测图像局部特性的不连续性,然后再将这些不连续的边缘像素连成完备的边界。边缘的特性是沿边缘走向的像素变化平缓,而垂直于边缘方向的像素变化剧烈。从这个意义上说,提取边缘的算法就是检测符合边缘特性的边缘像素的数学算子。 由于地球的辐射存在不均匀性,所以地平高度与采用的地平检测方式有关。其差别在于对应不同的地平检测方式,具体的地平高度随地球辐射变化程度不同。本文采用比例门限法检测地平圈。具体算法如下:以粗略地心为起点,以0.5度为间隔取720条射线。考虑到只需扫描地球辐射过渡带,所以每条射线的扫描起点距粗略地心为100个单位,间隔一个单位进行一次采样。由于该采样点的坐标不是整型,所以利用双线性内插得到采样点的灰度值,依次判断采样点,一边记录灰度最大值,一边判断该灰度值是否小于最大值的一半。当条件成立时,扫描停止,算出灰度值为最大值的50%所对应的坐标,即地平点坐标。扫完720条射线后,所有的地平点构成一个地平圈。该算法对接近过渡带的点进行双线性内插,提高了程序执行效率。检测出的地平点坐标是浮点数,提高了地平判定精度,有利于减小测量地心的误差。 2.4 精确定中心
精确定中心是算法中最关键的部分,方法的好坏直接影响地心的精度。一般有霍夫变换法、面积积分和三点均值法等。精确定位采用面积积分法。根据微积分理论,对于一个封闭区域D,其重心坐标可用如下公式得到:
式中,x和y代表单元点的坐标,ρ(x,y)代表单元点的密度,D代表整个区域。 当ρ(x,y)=1时,区域的重心和形心重合,S表示区域的面积。为了能够用计算机计算区域的中心位置,必须对上面的公式离散化。离散化后的公式为:
式中, R(θ)表示对应θi~θi+1范围内的幅值变化规律。 3 实验结果 把CCD拍摄到的图像数据送入该系统处理,每处理完一帧图像就会从串口输出一个姿态角信息。表1是四帧图像的处理结果。从表1可以看出算法的精度优于0.1的指标要求,算法处理时间约为0.49秒,满足一秒处理一帧的实时要求。 实时图像处理系统,实现了图像采集、实时数据处理及输出。系统具有很好的升级性和扩展性。采用DSP处理器,增强了系统的处理能力,提高了系统处理速度,保证了工作的实时性要求。采用贴片器件,既减小了PCB板的尺寸,又增强了系统的可靠性。实验证明,中心定位算法通过对原始图像滤波、判断目标是否进入视场、边缘检测和精确定中心大大提高了地平仪的测量精度。
|