2. 船舶雷达回波数据采集与格式解析
雷达回波处理的第一步不是算法,而是把雷达接收机输出的原始数据完整、可追溯地拿到手,并正确解析成后续处理能用的数值矩阵。本节围绕四个环节展开:原始数据接口、NMEA与AIS数据融合、回波数据文件结构、解析工具与实战数据加载。理解这些环节的关键在于建立一条清晰的数据链概念:雷达视频信号 → 采集接口 → 带时间戳与方位信息的原始帧 → 与NMEA/AIS融合 → 结构化文件 → 解析加载为可用数组。任何一环的格式或时间基准出错,都会在后续目标识别中表现为虚假回波、目标错位或航迹断裂。
一、雷达原始数据接口
船用雷达的原始回波通常以“视频信号+方位信号+触发信号”三路形式输出。视频信号是随距离变化的回波幅度,方位信号提供天线指向,触发信号标记每次脉冲发射的起点。采集设备要同时锁存这三路信息,才能把一维视频序列还原为极坐标下的二维回波图。常见接口有三类:
- 模拟视频接口:从雷达显示单元的video输出取信号,经高速ADC采样。需注意视频极性(正/负视频)和量程对应的距离刻度,采样率应满足距离分辨率要求,例如量程24海里、每脉冲采样4096点时,单点对应距离约5.9米。
- 网络接口:现代雷达多通过以太网输出封装后的回波数据,常见为UDP组播,每包携带帧头、方位角、采样点数和数据体。采集时需处理丢包与乱序。
- 厂商专有接口:部分雷达通过串口或专用总线输出压缩回波,需按厂商协议解析。
采集配置中必须明确记录:量程、脉冲宽度、天线转速、采样点数、方位分辨率。这些参数决定了回波矩阵的物理尺度,缺失后无法反演真实距离与方位。
二、NMEA与AIS数据融合
雷达回波本身只有相对本船的距离和方位,要转化为地理坐标下的目标信息,必须融合本船位置、航向、航速以及他船AIS报文。NMEA 0183是船用设备的标准语句格式,常用语句包括:
- GGA:本船经纬度、UTC时间、定位质量;
- HDT/H DM:本船真航向/磁航向;
- VTG:对地航速与航迹向;
- RMC:时间、位置、航速航向的组合语句。
AIS报文常用VDM语句承载,解析后可得他船的MMSI、经纬度、对地航速、航向、船首向。融合的核心是时间对齐:雷达帧带采集时间戳,NMEA语句带UTC时间,AIS报文也有时间字段。工程上通常以雷达帧时间为基准,选取时间差最小的NMEA与AIS记录进行插值或最近邻匹配。若时间偏差超过阈值(例如1秒),应标记该帧融合质量下降,避免把旧位置套到新回波上。
三、回波数据文件结构
原始回波数据量大,单帧24海里量程、4096采样点、方位步进0.1度时,一圈约3600个方位,单帧约1470万字节。实际存储通常采用“文件头+帧头+数据体”的分层结构。文件头记录全局参数:雷达型号、量程、采样点数、方位分辨率、数据类型(uint8/uint16)、字节序。每帧帧头记录:帧序号、UTC时间戳、天线方位角、脉冲宽度、本船位置与航向快照。数据体为该方位的采样序列。
常见格式有二进制裸数据(.bin)、厂商封装格式和通用交换格式。解析时必须先读文件头确认参数,再按帧循环读取,切忌用固定偏移硬编码,否则换一台雷达就失效。下面是一个简化的帧读取示例:
import numpy as np
with open("radar_echo.bin", "rb") as f:
header = np.fromfile(f, dtype=np.uint8, count=64)
samples_per_az = int.from_bytes(header[8:10], "little")
az_step = int.from_bytes(header[10:12], "little") / 100.0
frames = []
while True:
fh = f.read(32)
if len(fh) < 32:
break
ts = int.from_bytes(fh[0:8], "little")
azimuth = int.from_bytes(fh[8:10], "little") / 100.0
body = np.frombuffer(f.read(samples_per_az), dtype=np.uint8)
frames.append((ts, azimuth, body))
该示例中方位角以0.01度为单位存储,读取后除以100还原为度。实际工程还应校验帧长与文件总长是否匹配,发现截断帧要记录并跳过。
四、解析工具与实战数据加载
解析工具链通常由三部分组成:二进制读取层、协议解析层(NMEA/AIS)、数据组织层(把帧堆叠为极坐标矩阵)。加载实战数据时,建议按以下顺序操作:先读文件头打印参数并与采集配置核对;再抽样读取若干帧,检查方位角是否单调递增、采样值分布是否合理;最后整文件加载并统计帧数、时间跨度、缺失方位比例。
加载完成后,把各方位采样按方位角排序堆叠为形状为(方位数,采样点数)的二维数组,即可用于后续的杂波抑制与目标检测。若发现方位角回绕(从359.9跳到0.1),需按圈分组,避免矩阵错位。下图展示了从接口采集到加载为可用矩阵的完整数据链与关键校验点:
实战加载时,一个值得养成的习惯是先做“小样本验证”:取前100帧,画出方位-距离灰度图,观察是否有明显的船体回波和岸线轮廓。若图像呈均匀噪声,多半是字节序或数据类型读错;若出现周期性条纹,通常是方位步进参数与实际不符。确认无误后再整文件加载,可避免在错误数据上浪费后续处理时间。
完成本节的数据采集与解析后,应得到一份带时间戳、方位信息、本船位姿快照的回波矩阵,以及与之对齐的AIS目标列表。这份结构化数据是后续杂波抑制、恒虚警检测和目标跟踪的输入基础,其质量直接决定整条处理链的上限。