利用 Hough 变换处理量测得到的含杂波的二维坐标,解决多目标航迹起始问题(Matlab代码实现)

简介: 利用 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部分。

📚2 运行结果

2.1 标准Hough变换

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

2.2 修正Hough变换

image.gif 编辑

image.gif 编辑

2.3 序列Hough变换

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

部分代码:

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 参考文献

文章中一些内容引自网络,会注明出处或引用为

相关文章
|
20天前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
|
20天前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
105 8
|
20天前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
|
20天前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
|
20天前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
111 0
|
20天前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
|
20天前
|
机器学习/深度学习 数据采集 测试技术
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
|
20天前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
|
1月前
|
编解码 运维 算法
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
139 12
|
1月前
|
人工智能 数据可视化 网络性能优化
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)

热门文章

最新文章