1. 引言
随着科学技术的发展,小型目标对于高价值海洋设施的威胁越来越大。小目标探测声纳是水下预警体系重要的一环。一款人机界面友好、人机交互方便、信息显示直观、功能定制方便的小目标探测声纳显控软件 [1] 可以有效改善小目标探测系统的操作性。
本文介绍一种基于Qt的小目标探测声纳显控软件设计实现方法。满足跨平台移植需求,同时采用静目标抑制方法,有效降低虚警率。
2. 基于Qt的显控软件构架
Qt是一种面向对象、先进的、跨平台图形库软件 [2],具有广阔的应用前景。Qt支持VxWorks、Windows、Linux等操作系统,只需通过交叉编译后就可使源代码在不同平台上运行。而且Qt模块化程度高并同时支持OpenGL、OpenCV等 [3],对于开发人员而言十分便捷且友好,因此选择Qt作为本文显控软件的开发平台。
本文提出的声纳显控软件分为参数显示、画面显示与控制菜单三部分。架构框图如图1所示。实际显控界面如图2所示。

Figure 1. Display and control software architecture
图1. 显控软件架构图

Figure 2. Display and control software interface
图2. 显控软件界面
A信息显示区:包含当前时间、光标位置信息、航速、航向、纵横摇信息、工作状态及报警状态显示。
B跟踪目标信息显示区:显示当前手动或自动跟踪目标的批号、距离、方位、速度信息。
C放大区:以光标为中心将回波放大显示。
D回波显示区:显示回波信息数据。
E发射参数设置区:包含显示方式、量程、发射方式、脉宽、频率、俯仰角度、功率控制、扇面发射角度设置、发射启动、发射停止控制。
F接收参数设置区:包含门限、TVG、MGC、归一化、静目标抑制、多帧累积、自动跟踪、警戒区域设置、幅度放大、幅度缩小控制。
G画面记录及回放区:包含画面记录及画面回放显示。
F参数设置及关机区:参数设置及关机按钮。
2.1. 参数显示
参数显示区域位于界面左侧中上部,主要包含当前时间、光标位置信息、设备状态信息、自动报警信息、跟踪目标信息等。参数显示部分主要采用QLabel及QtableWidget两种控件进行显示。
Qlabel是Qt中最基本的小部件类。一般用于显示当前日期时间、光标位置信息等标签文本,Qt默认坐标系原点位于左上角。X轴从左向右增长,Y轴从上到下增长。通过mousemoveevent事件,获得光标当前位置的坐标信息。
QTablwidget是一种常见的Qt程序显示数据表空间,类似于vc,c#中的datagrid,通常用于大容量文本跟踪目标信息等。实现跟踪目标信息实时更新显示。
2.2. 画面显示
画面显示区位于界面中部及左侧下部,界面中部为回波显示区域,可根据选择显示B-T界面、极坐标界面、海图界面等;左侧下部为放大区,以光标位置为中心放大显示。画面显示部分采用PaintEvent实现。paintEvent(QPaintEvent*)函数是QWidget类中的虚函数,用于ui的绘制。接收完一个周期的数据后执行update(),当绘制事件发生时,更新区域通常被擦除。如果需要在上次绘制的基础上进行绘制,用一个临时变量存储上次绘制后的图,然后在这个图上进行绘制,最后再直接显示这个图。只要窗口部件需要被重绘就被调用。每个要显示输出的窗口部件必须实现它。这个事件处理器可以在子类中被重新实现来接收绘制事件。
由于每个周期的数据量非常大,绘图可能需要几秒钟甚至更长的时间,而且有时还会出现闪烁现象,为了解决这些问题,可采用双缓冲 [4] [5] 技术来绘图。
首先,创建一个缓冲区(pix)和一个临时缓冲区(temppix),将每个周期的数据分批写入缓冲区。当所有数据都写入缓冲区时,将数据复制到临时缓冲区。主体部分绘制临时缓冲区的内容,判断绘制是否完成。如果绘制完成,更新启动缓冲区以接收下一个周期的数据,并清除临时缓冲区影响区。
整个图像数据的完全刷新占用了太多的资源,而双缓冲区绘图可以实现局部刷新,只更新两个接收数据之间的区域变化,大大降低了资源消耗。if(isDrawing)
{
tempPix = pix;
QPainter pp(&tempPix);
pp.drawRect(x,y,w,h);
painter.drawPixmap(0,0,tempPix);
}
else
{
QPainter pp(&pix);
pp.drawRect(x,y,w,h);
painter.drawPixmap(0,0,pix);
}
2.3. 控制菜单
控制菜单区域位于界面右侧,主要包含声纳发射参数控制(量程、频率、功率、脉宽、发射启动及停止等)、接收参数控制(门限控制、TVG、MGC、幅度放大及缩小等)、回放控制等。控制菜单部分采用QComboBox及QPushButton进行实现。
QComboBox提供了一种以占用最少屏幕空间的方式向用户显示选项列表的方法。组合框是一个显示当前项目的选择小部件,可以弹出可选项目列表。组合框可以是可编辑的,允许用户修改列表中的每个项目。采用currentIndexChanged(int)及activated(int)实现量程、频率、发射方式等复数选择框。
QPushButton控件是一个非常常用的按钮控件,它继承自QABstractButton。采用clicked()实现发射控制、幅度控制。
3. UDP数据传输
数据发送方通过源端口发送udp数据报文 [4]。Udp协议使用标头中的校验和来确保数据安全。 校验和是由数据发送者的一个特殊算法计算出来的,如果一批数据在传输过程中损坏,发送者和接收者的计算值将不匹配,并将检查传输是否有错误。
Receiver= new QUDPSocket(this);
Recevier->bind();//设置端口号
int i=30*1024*1024;
::setsockopt(receiver->socketDescriptor(),SOL_
SOCKET,SO_RCVBUF,(char*)&i,sizeof(i));//
设置缓冲区大小为30 M,由于数据传输速度过快且数据量较大,使用默认缓冲区大小将导致大量数据丢包
Connection(reciver,SINGNAL(readyRead()),this,SLOT(processPendingDatagram);
void MainWindow::processPendingDatagram()
{
QByteArray datagram;
Datagram.resize(receiver->pendingDatagramSize();
If((datagram[0]==//数据头及标志位)
{
Pdatal=datagram[];//波束批次数据低位
Pdata2=datagram[];//波束批次数据高位
a2=Pdata1+Pdata2*256;
for(a1=0;a1
{
H[a1][a2]= datagram[]//数据低位+ datagram[]//数据高位
}
4. 嵌入海图
为了更好地显示威胁目标的态势,可以通过嵌入预下载的高清图片实现。采用QImage生成二维纹理的方法。将图片导入Qt的QImage类的一个对象中,当然也可以通过QPaint直接绘制到一QImage对象中。然后在OpenGL中将QImage的对象转化为texture,通过OpenGL中贴纹理的方式,将包含图片显示在OpenGL中。
glTexImage2D(GL_TEXTURE_2D,//指定纹理目标
0, //指定多级渐远纹理的级别
GL_RGB, //纹理储存为RGB值
width, height, //图像高度及宽度
0,
GL_RGB,//源图格式
GL_UNSIGNED_BYTE, //源图数据类型
data);//源图数据
glGenerateMipmap(GL_TEXTURE_2D);
根据实际地理坐标嵌入海图画面如图3所示。
5. 静态目标抑制
针对小目标等动态目标,采用静态目标抑制技术剔除静态目标可以有效降低虚警率。
背景差分法是静态场景运动目标识别的常用方法。该算法将当前帧数据与背景帧数据进行区分,得到目标运动轨迹的灰度图,并采用阈值化方法提取运动目标,为了避免环境杂波的影响,同时根据当前采集到的数据对背景帧数据进行更新。
在背景建模时,采用混合高斯模型 [6],对背景像素区进行更新。利用像素在较长时间内的概率密度表示背景,然后使用统计差分进行目标像素判断。由于处理R、G、B三色通道数据运算量较大,故采用1维幅值数据进行处理,之后通过色棒转化为伪彩色图像显示。
在混合高斯背景模型中,不同像素点间的处理都是相互独立的,单个采样点
服从的混合高斯分布概率密度函数为
其中,K是高斯函数的个数,本文取3,
是像素点t时刻的值,
为t时刻第i个高斯分布的权重,
为t时刻第i个高斯分布的概率密度函数。
对每个新像素值
,与当前K个高斯模型进行比较,若该像素值与背景模型的均值偏差在
内,即
,则该像素点属于背景点,否则属于前景点。
各个模式权重重新归一化
对于匹配模型
,t = 1,否则
,t = 0;
对于未匹配的模型,均值
与标准差
保持不变。对匹配模型的参数进行更新。
若t时刻像素
与第i个高斯模型匹配,则该高斯模型被更新。
各高斯分布按照
降序排列,权重大,标准差小的模式靠前。
选取前B个高斯分布作为背景的分布,B有下式确定:
其中T为预设的阈值,本文取0.75。原始图像如图4所示,建立的混合高斯背景模型如图5所示,静目标抑制后图像如图6所示。

Figure 5. Gaussian mixture background model
图5. 混合高斯背景模型

Figure 6. Image after static target suppression
图6. 静目标抑制后图像
6. 结束语
本文提出了一种基于Qt图形开发工具和面向对象技术的小目标探测声纳显示控制接口软件的设计方法。设计了一种人机界面友好、人机交互方便、信息显示直观、功能定制方便的声纳显示控制界面。
NOTES
*通讯作者。