—168
— ·人工智互助基金
36卷 第5期
ol.36 No.5 2010年3月
March 2010
能及识别技术· 文章编号:1000—3428(2010)05—0168—02
文献标识码:A
中图分类号:TP391
基于DSP 的实时目标特征提取算法
邓志云,宋志刚,王 荣
(中国空空导弹研究院,洛阳 471009)
经典古言小说摘 要:成像制导武器系统进行多目标实时跟踪时,必须具备实时目标特征提取能力。实现一种基于TMS320C64x DSP 平台的实时目标特征提取算法。针对C64x DSP 的增强存储器访问特性,通过多像素信息的同步提取和像素归并方法,对算法进行优化。实验结果表明,优化后算法的执行效率和实时性较高。
关键词:特征提取;像素归并;二值图像;标记算法;实时
Feature Extraction Algorithm for Real-time Target Bad on DSP
DENG Zhi-yun, SONG Zhi-gang, WANG Rong
(China Airborne Missile Academy, Luoyang 471009)
【Abstract 】Imaging-guided weapon system must have the capability of real-time extraction for target feature during multi-target real-time tracking. This paper realizes a real-time extraction algorithm for target feature bad on TMS320C64x DSP platform. According to the enhanced memory access characteristics of C64x DSP, the algorithm is optimized by using multi-pixel information synchronization extraction and pixel merging approach. Experimental results show that the optimized algorithm has high implementation efficiency and high real-time performance. 【Key words 】feature extraction; pixel merging; binary image; label algorithm; real-time
计 算 机 工 程 Computer Engineering 第V 1 概述
随着DSP 技术的不断成熟,它在高精度导弹制导领域的应用提高了成像制导武器系统进行多目标实时识别与跟踪的能力。实时目标标记与特征信息提取方法是目标识别的关键技术之一。
基于像素点扫描的二值图像连通域标记法[1]通常需要执行二次扫描。文献[2-3]实现的带标记矫正连通域标记法只需一次扫描即可完成连通域标记,但对向上分叉多的连通域,其标记效率不高。文献[4]实现了一种通过快速一次扫描完成各种复杂连通域标记的方法,但其实时性无法满足高实时系统的需要。本文在TMS320C64x DSP 系统平台的基础上,设计并实现一种高实时的、基于像素线的连通域检测与特征提取算法。
2 目标特征提取算法
目标特征提取算法对图像预处理分割后生成的二值图像目标区域进行像素标记,以区分不同目标,进而提取各个目标的特征(即每个目标物体区域的面积、灰度和形心等),实现目标识别。
2.1 目标标记
直线段(由连续的“1”像素点构成)是本文连通体检测方法的处理单元,判定任意第i 行直线段l i (<r i , c 1>, <r i , c 2>)与第i +1行直线段l i +1(<r i +1, c 3>, <r i +1, c 4>)连通的准则如下:若c 1≤(c 4+1)且c 3
≤(c 2+1),则直线段l i 与l i +1连通,否则不连通,其中,r 为行坐标;c 为列坐标。
按照从上到下、从左至右的逐行逐列图像扫描顺序,连通直线段使用同一标记号,不连通直线段使用不同标记号进行目标标记,并统计各目标出现的最小行RF [i ]、最大行RL [i ]、最小列CF [i ]、最大列CL [i ]和灰度GS [i ]信息。
目标标记算法MarkObjs 涉及的数据结构和变量描述如下: (1)目标直线段信息结构体stBinInfo ,包含成员:
义主unsigned char SP ,EP ; /* 起始列、终止列坐标 */
unsigned char MI ,GS ; /* 目标归属标记号、灰度值 */ 约定BInfoP [0].SP 为上行连通判定搜索的最后直线段 索引。
(2)Tab [i ]:连通体归属的标记号,用于多个连通体的归并,初始Tab [i ]=i (即目标i 仅依附于本身);BInfo :当前扫描直线段信息;BInfoC [0..k ]:当前行所有直线段信息;BInfoP [0..k ]:上行所有直线段信息;MarkNum :标记数量;TarNum :目标数量。
MarkObjs 算法描述如下: (1)从row =1开始行像素扫描。
(2)当row <rows 时,若第row 行存在直线段l ,则调用MarkCompare ()进行连通体判定处理。当第row 行扫描结束时,将BInfoC [1..k ]保存到BInfoP [1..k ],并转到第row +1行继续上述操作。
(3)当row =rows 时,调用Merge _AT ()进行目标邻接合并,标识出实际有效目标,算法结束。
在上述算法中,MarkOne ()函数处理当前直线段GS [i ]的信息并设定标记号,计算当前目标的RF [i ], RL [i ], CF [i ]和CL [i ],将BInfo 保存到BInfoC [i ]中。MarkCompare ()在第row -1行BInfoP [s ..t ](s 初始为BInfoP [0].SP )中进行BInfo 连通性扫描,若存在连通体,则置BInfo 为对应的标记号j (假定为j ),并在BInfoP [j..t ]中继续进行BInfo 的连通性扫描,对后续存在的连通体进行邻接对处理,即AdjoinTable (m , n ),否则标记为新目标MarkOne (),最后保存当前搜索索引值到BInfoP [0].SP 。
作者简介:邓志云(1975-),男,硕士,主研方向:嵌入式系统软件开发;宋志刚、王 荣,高级工程师
收稿日期:2009-11-20 E-mail :public_d@yeah
英语b级试卷AdjoinTable(m, n)将标记对Tab[m]与Tab[n]的较大者及其所依附的标记值修改为两者中较小的标记值(例如,若Tab[m]<TAB[n],则修改Tab[Tab[n]]及Tab[n]依附到Tab[m]的标记)。Merge_AT()将不同的连通体标记对合并归属到其最小的标记值,并对各标记目标进行归并处理,得到最终的目标数TarNum、标记数MarkNum及各标记目标信息。
2.2 特征提取
通过目标标记算法得到各标记目标的相关信息,特征提取主要对各目标信息进行特征信息统计,从而得到每个目标物体区域的面积、灰度及形心信息。
特征提取算法GetCharacter涉及的数据结构是特征信息结构体stTargetChar,该结构体包含以下成员:
unsigned short Grey, Area; /*特征目标的平均灰度、面积*/
unsigned char XL, YL; /*特征目标的长(行宽)、宽(列宽)*/
unsigned char Xo, Yo; /*特征目标的几何中心X行坐标、Y列坐标*/兰亭序全文真迹
GetCharacter算法较简单,简要描述如下:(1)从i=1开始对MarkNum个标记目标依次进行判定,并根据邻接目标信息,得到TarNum个最终目标的RF[i], RL[i], CF[i], CL[i]和GS[i]信息。(2)从k=1开始对TarNum个目标依次进行特征信息的计算,记为对应的stTargetChar[k]。
3 像素归并优化
图1是应用本文目标特征提取算法进行标记处理得到的128×128×8二值图像,获得了4个正确的标记目标信息。表1是图1去边(去掉首行和末行,即126×128×8,以下同)的算法核心代码的相关数据(不考虑函数调用开销),其中,t c=1.67 ns为时钟周期,含函数调用开销。仿真环境如下:TI Code Compor Studio V3.3/C64xx CPU Cycle Accurate Simulator,编译选项:-g。由表1可知,Col128子循环调用了16 128次,像素点扫描几乎占用了算法的全部处理时间。
图1 128×128×8二值图像
表1 目标特征提取算法仿真
名称类型调用数处理时间/(×t c)
MarkObjs 主函数 1 977
耐冬花120
MarkOne 子函数90 11
027
MarkCompare 子函数90 18
861 AdjoinTable(m,n) 子函数 5 315
Merge_AT 子函数 1 1
072
好看的羽绒服Row128循环主循环126 976
536
Col128子循环子循环16 128 966 024
GetCharacter 函数 1 3
519 提升像素点的标记效率、进行循环优化是算法优化的关键。文献[5]通过片外和片内存储调度提高
了程序运行效率,C64x提供了存储空间访问内联函数,支持非对齐的存储空间访问[6],单条Load指令能够访问多个数据,为多像素点的信息同步提取提供了便利。本文采用了C64x内联函数提高存储空间访问效率。
实现多像素点处理的并行化是算法优化的重点。根据一次存储空间访问的多像素点中“1”的分布情况,像素归并方法重点解决多像素点的归并,从而实现目标的并行标记。3.1 二像素归并
在二像素信息的同步提取中,“1”的分布有4种组合情形,其归并处理简要描述如下:
(1)00:完成l的新目标标记处理;
(2)01:合并l与低位“1”像素点为新的直线段l,并完成新直线段l的新目标标记处理;
(3)10:完成(1)中规定的任务,并处理高位“1”像素点新目标直线段l;
(4)11:合并l与该二像素点为新的直线段l。
其中,l为上次二像素访问所联结的直线段。表2中二像素法是图1去边的目标标记算法中循环相关代码的测试数据,Col128子循环调用8 064次,处理时间为550 149t c,占原有966 024t c的56.9%,标记算法耗时561 245t c,占原有977 120t c 的57.4%。
3.2 四像素归并
二像素归并有效提高了算法性能,下文讨论四像素归并优化。四像素中“1”的分布有16种组合情形,可以归并为6种组合进行处理,归并处理描述如下:
(1)0000:完成l的新目标标记处理;
(2)0001, 0011, 0111:合并l与低位“1”像素点为新的直线段l,并完成新直线段l的新目标标记处理;
(3)0010, 0100, 0101, 0110:完成(2)中规定的任务,并完成中间连续“1”直线段的新目标标记处理;
(4)1000, 1001, 1011, 1100, 1101, 1110:完成(2)中规定的任务,并处理高位连续“1”新目标直线段l;
(5)1010:完成(3)中规定的任务,并处理高位“1”新目标直线段l;
(6)1111:合并l与该四像素点为新的直线段l。
其中,l为上次四像素访问所联结的直线段。表2中四像素法是图1去边的目标标记算法中核心代码的相关数据,Col128子循环调用数4 032次,处理时间为270 615t c,占原有966 024t c的28.0%,标记算法总时间283 475t c,占原有977 120t c 的29.0%。
表2 像素归并目标标记算法仿真
归并方法名称类型调用数处理时间/(×t c)
MarkObjs 主函数 1 561
245
Row128循环主循环126 560
661 二像素法
Col128子循环子循环8 064 550 149
MarkObjs 主函数 1 283
475
Row128循环主循环126 282
891 四像素法
Col128子循环子循环 4 032 270 615
4 实验验证
在某成像制导武器系统的多目标实时跟踪仿真中,采用本文实现的目标特征提取算法,选用图2所示的128×128×8的二值图像进行验证处理,表3是图
赞美美女的句子
2去边的目标标记算法的仿真测试数据(DSP时钟频率为
600 MHz),编译选项:-g(无编译优化所在列),-pm -o3(编译优化所在列)。
图2 128×128×8二值图像
(下转第172页)
—169—