当前位置: 首页 > news >正文

标准 Hough 变换、修正 Hough 变换和序列 Hough 变换三种典型航迹起始算法研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

💥1 概述

航迹起始是航迹处理中的首要问题,在各种航迹处理的情况下都存在,对于多目标航迹处理来说,航迹起始是第一步,是进行航迹跟踪的基础。 由于被探测目标一般都是由远到近的出现在搜索雷达的有效探测范围内的,在航迹起始时,目标一般距离雷达较远,此时雷达分辨力低、测量精度差,加之真假目标的出现无真正的统计规律,因此在搜索雷达数据处理技术中,航迹起始问题是一个难题。现有的航迹起始算法可分为顺序处理技术和批处理技术两大类。通常,顺序数据处理技术适用于弱杂波环境中的航迹起始,主要包括启发式规则方法和基于逻辑方法;批处理技术则更适用于强杂波环境,主要包括 Hough 变换等方法。基于逻辑的方法在虚警概率比较低的情况下,起始航迹的效果比较好,但在复杂环境下虚假航迹比较多;Hough 变换法则适用于强杂波背景下航迹成直线的环境,但是Hough 变换法通常需要多次的扫描才能较好地起始航迹,且计算量大不符合工程应用的需要。

低信噪比、低信杂比下的航迹起始是多目标航迹起始的关键问题。Hough 变换具有对局部缺损的不敏感性、对随机噪声的鲁棒性以及适于并行处理、实时应用等特点,特别史和解决多目标航迹起始问题。本文对 Hough 变换航迹起始算法进行了研究,主要工作如下:

1.概述了主要的航迹起始方法,介绍了 Hough 变换基本原理、Hough 变换的特点,指出了 Hough 变换在航迹起始中存在的问题。

2.研究与分析了标准 Hough 变换、修正 Hough 变换和序列 Hough 变换三种典型航迹起始算法。通过仿真分析,总结出每种算法的适用环境。

1962 年,Paul Hough 提出了 Hough 变换法,它是实现图像边缘检测的一种有效方法。其基本思想是将图像空间中的检测问题转换到参数空间,通过在参数空间里进行简单的累加统计完成检测任务,用大多数边界点满足的某种参数形式来描述图像的区域边界曲线。同时 Hough 变换也可以被描述为证据积累过程:图像空间中的任意数据点,通过变换函数的作用,在参数空间中,对所有可能经过这一数据点的图形对应的参数进行投票;所有数据点的投票在积累矩阵中进行积累,投票结束后,各积累单元的积累值表示所检测图形的参数为相应积累单元对应参数的概率的大小。因而对于被噪声干扰或间断区域边界的图像,Hough 变换具有很好的容错性和鲁棒性。

Hough 变换用于航迹起始具有以下特点:

(1)将量测空间中的检测问题转换到参数空间进行,具有很强的抗干扰能力,对随机噪声具有一定的鲁棒性;

(2)量测中的每一个点都参加“投票”,所以它特别适合并行处理;

(3)一种变换方程只对某一种特定的曲线进行检测,针对性强;

(4)不受空间和曲线形状的影响:广义 Hough 变换可以检测任意形状的曲线,三维空间 Hough 变换可以检测空间曲线。Hough 变换用于航迹起始具有以下优点:

(1)Hough 变换可以检测任意已知形状的曲线,从而能够起始某类特定航迹,作为先验信息,特定航迹的选定提高了信号相干累积的效率,避免了大量杂波引起的虚假航迹问题;

(2)Hough 变换不要求曲线连续或可导,并且对局部缺损和随机噪声鲁棒,适于低检测率和低量测精度下的起始;

(3)Hough 变换用于航迹起始不需要目标状态初值,可实现全自动起始。本文通过大量仿真实验体会到 Hough 变换航迹起始算法存在若干问题,严重地影响这航迹起始的性能,具体体现在:

(1)标准 Hough 变换的计算量庞大,并且需要很大的存储空间,在低信噪比环境下表现得特别明显,延长了航迹起始时间,达不到快速性起始的要求。

(2)Hough 变换航迹起始算法在提取航迹参数时一般使用阈值法,这就不可避免的出现航迹簇拥现象,即一个目标产生了参数近似的多条轨迹。如何选择峰值提取方法既能准确地提取峰值,同时又能有效地解决航迹簇拥现象,是亟待解决的问题。

(3)Hough 变换航迹起始算法应用于工程实际带来了诸多问题,如:实际系统中涉及参数众多,如何对这些参数进行全面有效地利用,是急需解决地问题;针对不同地起始环境应该研究不同地专用算法与之相匹配;实际系统中,很多参数地选取都不能由理论公式推导得出,而要通过大量得仿真实验得出。

详细文档讲解见第4部分。

1. 航迹起始的意义与挑战

航迹起始是目标跟踪系统的首要环节,需从含噪量测数据中识别真实目标的初始运动轨迹。主要挑战包括:

  • 杂波干扰:环境噪声和电子干扰产生虚假点迹
  • 量测误差:破坏航迹的直线几何特性
  • 时序模糊:传统批处理算法忽略数据时间相关性
  • 参数敏感:分割尺度(Δρ, Δθ)和检测门限缺乏理论指导

2. 标准Hough变换航迹起始算法

2.1 基本原理
  • 空间转换思想:将笛卡尔空间中的点迹 (x,y)映射到参数空间 (ρ,θ):

    同一直线上的点在参数空间交于一点
  • 投票累积机制:统计参数空间交点处的累积值,超过阈值即判定为航迹
2.2 实现步骤
  1. 参数空间划分:设定容量参数 Δρ,ΔθΔρ,Δθ,过小导致漏检,过大引发虚警
  2. 变换矩阵构建


3.峰值检测:通过多维矩阵变换法(Carlson方法)实现高效计算

2.3 局限性
问题类型具体表现
计算效率批处理需联合多帧数据,计算量大
虚假航迹单次扫描杂波累积形成虚警,虚假航迹占有率可达94.5%
机动适应性仅适合短时直线运动,无法处理机动目标

3. 修正Hough变换航迹起始算法

3.1 改进机制
  • 先验信息约束:引入目标运动学信息(速度范围、加速度限制)缩小参数搜索空间
  • 投票策略优化
    • 模糊Hough变换:用[0,1]概率值替代二值投票,缓解量测误差导致的峰值簇拥
    • 邻域点迹替代:以观测数据邻域多点投票提升鲁棒性
3.2 性能优势
  • 计算效率:较标准Hough变换减少30%运算量
  • 强杂波环境表现:在4帧数据中可起始真实航迹

注:实验显示,4帧数据起始1条真实航迹+3条虚假航迹

3.3 工程瓶颈
  • 虚假航迹残留:仍需后续处理(如粒子滤波)剔除虚警
  • 参数敏感持续:分割尺度选择仍依赖经验

4. 序列Hough变换航迹起始算法

4.1 时序处理创新
  • 增量式处理:按时间片分段处理数据,非一次性批处理

  • 航迹假设库更新

    for t in time_slices: # Step1:新点迹与既有航迹关联 association_prob = calc_prob(new_meas, existing_tracks) # Step2:概率超阈值则扩展航迹,否则新建假设 if association_prob > γ: update_track(existing_tracks, new_meas) else: create_new_track(new_meas)
4.2 关键技术突破
  • 随机采样策略:序列采样终止规则限制计算量
  • 运动特征约束:构建飞行特征映射集剔除虚假关联
4.3 性能验证
指标标准Hough序列Hough
虚假航迹占有率94.50%14.29%
计算时间(秒)164.31209.5416
高杂波环境成功率<85%>97%

5. 三种算法综合对比

5.1 性能量化对比
算法类型起始成功率虚假航迹率计算耗时机动适应性
标准Hough变换97.54%94.50%164.3s
修正Hough变换98.2%*35-40%*112.1s*
序列Hough变换97.48%14.29%9.5s

*注:修正Hough数据根据估算

5.2 适用场景推荐
场景特征推荐算法依据
低噪声+直线运动标准Hough结构简单,实时性高
强杂波+已知运动约束修正Hough先验信息抑制虚警
高机动+断续点迹序列Hough时序关联优势
低概率点迹截获(LPI)时序标签修正Hough时序标签增强关联

6. 前沿发展与挑战

  1. 深度学习融合
    • 用CNN自动学习参数空间分割尺度
    • GBDT随机森林融合多算法提升鲁棒性
  2. 工程优化方向
    • 并行化架构:多时刻数据并行Hough变换
    • 累加向量重构:统计非零元素数替代简单求和
  3. 未解难题
    • 非线性航迹的通用参数化模型缺失
    • 密集群目标的分辨率极限

结论

标准Hough变换因其简洁性仍适用于简单场景;修正Hough通过运动约束提升抗杂波能力,但参数敏感性问题未根治;序列Hough凭借时序处理和随机采样策略,在高噪声、强杂波、机动目标场景展现显著优势,虚假航迹率降低至14.29%。未来突破需结合深度学习与并行计算,建立自适应参数优化机制。

📚2 运行结果

2.1 标准Hough变换

2.2 修正Hough变换

2.3 序列Hough变换

部分代码:

target=2;%目标数
n=15;%起始拍数
k=90;%sig分的个数
m=500;%p分的个数
Monte_Carlo=100;%Monte_Carlo仿真次数
L=150;%雷达量测距离
Pd=1;%检测概率

%目标起始坐标及速度
x1=40;y1=20;vx1=0.3;vy1=0.18;%单位km,km/s
x2=20;y2=80;vx2=0.3;vy2=-0.18;
Ts=4;%采样周期,单位s

success=zeros(Monte_Carlo,target);%目标航迹成功起始矩阵
fake(1:Monte_Carlo)=0;%目标航迹虚假起始矩阵
track_number(1:Monte_Carlo)=0;%总航迹起始数

N=0:n-1;
X1_init=x1+Ts*N*vx1;%真实航迹1
Y1_init=y1+Ts*N*vy1;
Y1_0=y1-vy1*x1/vx1;
offset(1)=Y1_0*cos(atan(abs(vy1)/abs(vx1)));%航迹1真实垂距
X2_init=x2+Ts*N*vx2;%真实航迹2
Y2_init=y2+Ts*N*vy2;
Y2_0=y2-vy2*x2/vx2;
offset(2)=Y2_0*cos(atan(abs(vy2)/abs(vx2)));%航迹2真实垂距

Np=1:k;
dNp=pi/k;%参数空间角度间隔
angle=(Np-1/2)*dNp;

dMp=6*0.1;%%参数空间垂距间隔

for monte=1:Monte_Carlo
clear R Rn A0 P0 R X_za Y_za noisex noisey
R = poissrnd(50,1,n);%每拍杂波个数,服从泊松分布
Rn=R(1);
X_za=unifrnd (0, 100, 1, R(1));%随机产生(x,y)坐标,服从0-100的均匀分布
Y_za=unifrnd (0, 100, 1, R(1));
for i=2:n
X_za(Rn+1:Rn+R(i))=unifrnd (0, 100, 1, R(i));
Y_za(Rn+1:Rn+R(i))=unifrnd (0, 100, 1, R(i));
Rn=Rn+R(i);
end

noisex=normrnd(0,0.1,1,n);%x量测噪声
noisey=normrnd(0,0.1,1,n);

X1=X1_init+noisex;X2=X2_init+noisex;%实际量测
Y1=Y1_init+noisey;Y2=Y2_init+noisey;

A=zeros(k,2*m);%积累矩阵

%航迹1 Hough变换
for i=1:n
for j=1:k
P(i,j)=X1(i)*cos(angle(j))+Y1(i)*sin(angle(j));
end
end

%航迹2 Hough变换
for i=(n+1):(2*n)
for j=1:k
P(i,j)=X2(i-n)*cos(angle(j))+Y2(i-n)*sin(angle(j));
end
end

%杂波的Hough变换
for i=2*n+1:(2*n+Rn)
for j=1:k
P(i,j)=X_za(i-2*n)*cos(angle(j))+Y_za(i-2*n)*sin(angle(j));
end
end

%对积累矩阵投票
for i=1:k
for j=1:2*m
a=-L+(j-1)*dMp;
b=-L+j*dMp;
for h=1:2*n+Rn
if (P(h,i)>=a && P(h,i)<b)
A(i,j)=A(i,j)+1;
end
end
end
end

%寻找投票数大于等于阈值的参数
count=0;
for i=1:k
for j=1:2*m
if A(i,j)>=Pd*n*0.95%阈值=检测概率*起始拍数*(0到1之间的值)
count=count+1;
P0(count)=-L+(j-1/2)*dMp;%存储符合要求的参数
A0(count)=angle(i);%存储符合要求的参数
end
end
end

track_number(monte)=count;%记录每次Monte_Carlo仿真总航迹数

%输出符合要求的参数
for h=1:count
flag=0;
for din=1:target
if abs(P0(h)-offset(din))<=3
success(monte,din)=1;
flag=1;
end
end
if flag==0
fake(monte)=fake(monte)+1;
end
fprintf('the value of P0 is %f;the value of A0 is %f\n',P0(h),A0(h));
end
fprintf('*****************************************\n');

%绘图
figure
subplot(1,2,1)
scatter(X1,Y1,5,'r');
hold on
scatter(X2,Y2,6,'*','r');
hold on
scatter(X_za,Y_za,3,'filled','g')
hold on
xlabel('x(km)');
ylabel('y(km)');
legend('真实航迹1','真实航迹2','杂波');
title('量测图')
axis([0 100 0 100])
axis on

subplot(1,2,2)
scatter(X1,Y1,5,'r');
hold on
scatter(X2,Y2,6,'*','r');
hold on
scatter(X_za,Y_za,3,'filled','g')
hold on
for h=1:count
X=0:1:100;
YS=(P0(h)-X*cos(A0(h)))/(sin(A0(h)));
plot(X,YS,'b');
hold on
xlabel('x(km)');
ylabel('y(km)');
legend('真实航迹1','真实航迹2','杂波','起始航迹');
title('起始结果图')
axis([0 100 0 100])
axis on
end
end

%计算航迹起始成功率
success_number=0;
for i=1:Monte_Carlo
for j=1:target
success_number=success_number+success(i,j);
end
end
success_rate=success_number/(Monte_Carlo*target);
fprintf('the rate of the successful Track initialization is %f%%\n',success_rate*100);

%计算航迹虚假率

🎉3参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

Shen Baoyin

🌈4 Matlab代码、文档讲解

http://www.jsqmd.com/news/391776/

相关文章:

  • 吐血推荐! AI论文平台 千笔 VS 万方智搜AI,MBA写论文必备!
  • 定稿前必看!降AIGC软件 千笔·降AI率助手 VS 云笔AI,本科生专属神器!
  • 学霸同款 9个降AIGC工具测评:专科生降AI率必备攻略
  • 实用指南:海洋漏油事件检测与分类 yolov5-GhostHGNetV2实现与训练
  • 永磁同步电机 (PMSM) NVH 分析视频精讲教程(21)
  • Cython终极性能优化指南:从Python到C++的混合编程实战 - 实践
  • Embedded Studio 发布V8.26c,再次微更新
  • 2026年国内可靠的生化池清掏厂家排名,优质的生化池清掏厂家推荐榜永邦环卫层层把关品质优 - 品牌推荐师
  • 3. 字符串格式化输出
  • 差分进化算法(DE)与缩放因子自适应差分进化(SHADE)在CEC2005函数寻优中的性能研究(Matlab代码实现)
  • 电池充电比较:PID与电流控制器(Matlab代码实现)
  • 嘉立创EDA:同一个原理图中不同图页中的VCC是连接在一起的,GND是连接在一起的
  • 五大真正可部署的Agentic AI网站构建器
  • 快速了解盒马鲜生礼品卡回收平台:流程简单、到账快 - 团团收购物卡回收
  • 2026年鸡眼机市场盘点:这些品牌值得关注,全自动一次性雨衣机/台布机/多功能浴帘机/开衫雨衣机,鸡眼机厂商找哪家 - 品牌推荐师
  • 天虹提货券真的可以回收吗?分期乐用户的必读攻略 - 团团收购物卡回收
  • 减肥计划-1
  • 摸鱼游戏推荐——小黑屋
  • 分期乐天虹提货券能回收吗?教你如何快速变现! - 团团收购物卡回收
  • 5分钟学会Z-Image-Turbo:孙珍妮AI绘画入门教程
  • 2026信用卡贷款逾期协商分期展期优质推荐榜|停息挂账机构优质推荐榜,找对路径稳稳上岸 - 代码非世界
  • AutoGen Studio生产环境:Qwen3-4B-Instruct支撑教育场景个性化学习路径规划
  • 分期乐用户必看:天虹提货券回收流程及省钱妙招 - 团团收购物卡回收
  • 澳门跨境租车新趋势:2026年这些公司表现亮眼,跨境租车/婚车租赁/跨境包车/中巴租赁/租赁/婚礼租车,租车公司口碑排行 - 品牌推荐师
  • .NET 10 C# 14 New Features 新增功能介绍-扩展成员Extension Members
  • 人工智能应用- 推荐算法:05.推荐算法的社会争议
  • 揭秘银泰百货卡回收的最佳选择:安全、省心、省时 - 团团收购物卡回收
  • 人工智能应用- 推荐算法:06. 基于神经网络的推荐方法
  • 分期乐天虹提货券可以回收吗?探索划算回收技巧和平台推荐 - 团团收购物卡回收
  • 减肥计划-2