基于霍夫变换的航迹起始算法研究(Matlab代码实现)

     目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码

💥1 概述

一、设计内容

利用Hough变换处理量测得到的含杂波的二维坐标,解决多目标航迹起始问题。使用Matlab进行仿真,用离散点绘制原始数据,用连线绘制处理结果。

二、主要技术指标

1、掌握标准Hough变换检测直线的基本原理,以及一些改进的Hough变换算法。

2、用Matlab实现Hough变换算法,并绘制处理结果。

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

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

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

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

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

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

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

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

(4)不受空间和曲线形状的影响:广义Hough变换可以检测任意形状的曲线,三维空间Hough变换可以检测空间曲线。

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

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

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

(3)Hough变换用于航迹起始不需要目标状态初值,可实现全自动起始。

本文通过大量仿真实验体会到Hough变换航迹起始算法存在若干问题,严重地影响这航迹起始的性能,具体体现在:

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

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

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

📚2 运行结果

主函数部分代码:

%标准Hough变换
%Author:Shen Baoyin
%Time:2018/8/1
close all
clear all
​
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_Carloclear R Rn A0 P0 R X_za Y_za noisex noiseyR = 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:nX_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:nfor j=1:kP(i,j)=X1(i)*cos(angle(j))+Y1(i)*sin(angle(j));endend%航迹2 Hough变换for i=(n+1):(2*n)for j=1:kP(i,j)=X2(i-n)*cos(angle(j))+Y2(i-n)*sin(angle(j));endend
​%杂波的Hough变换for i=2*n+1:(2*n+Rn)for j=1:kP(i,j)=X_za(i-2*n)*cos(angle(j))+Y_za(i-2*n)*sin(angle(j));endend
​%对积累矩阵投票for i=1:kfor j=1:2*ma=-L+(j-1)*dMp;b=-L+j*dMp;for h=1:2*n+Rnif (P(h,i)>=a && P(h,i)<b) A(i,j)=A(i,j)+1;endendendend

🎉3 参考文献

​[1]高国琴,李明.基于K-means算法的温室移动机器人导航路径识别[J].农业工程学报,2014,30(07):25-33.

部分理论引用网络文献,若有侵权联系博主删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/19179.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TeeChart for.NET Crack

TeeChart for.NET Crack TeeChart for.NET为各种图表需求提供了图表控件&#xff0c;包括金融、科学和统计等重要的垂直领域。它可以处理您的数据&#xff0c;在各种平台上无缝创建信息丰富、引人入胜的图表&#xff0c;包括Windows窗体、WPF、带有HTML5/Javascript渲染的ASP.N…

k8s+springboot+CronJob 定时任务部署

kubernetesspringbootCronJob 定时任务配置如下代码&#xff1a; cronjob.yaml k8s 文件 apiVersion: batch/v1 kind: CronJob metadata:name: k8s-springboot-demonamespace: rz-dt spec:failedJobsHistoryLimit: 3 #执行失败job任务保留数量successfulJobsHistoryLimit: 5 …

2023.7月最新版idea安装Jrebel实现热部署,可解决后端启动等待时间过长问题

2023.7最新版idea热部署配置 一 下载jrebel插件二 激活我使用的方法 三 配置方式1 设置自动编译2 设置 compiler.automake.allow.when.app.running3 勾选项目&#xff0c;然后以Rebel方式启动 4 Settings查看Activation情况四 报错解决1 启动失败 2 端口被占用 五 总结 一 下载…

vue3+vite+Ts 基于Antv/x6 绘制流程图

需求效果&#xff1a; 需求&#xff1a; 实现一个流程图&#xff0c;双击可对相应的组件进行一些功能操作&#xff1b; 工具栈&#xff1a; 这里使用antv/x6&#xff0c; 基于vue3vitets进行开发 官网地址&#xff1a; https://x6.antv.antgroup.com/examples/showcase/pra…

代码随想录算法训练营第六十二天—图论补充

理论基础&#xff1a; 第一题、所有可能的路径 力扣题目链接 class Solution { private:vector<vector<int>> result;vector<int> path;void dfs(vector<vector<int>>& graph, int x){if(x graph.size() - 1){result.push_back(path);retu…

科技资讯|苹果Vision Pro手部追踪和手势相关新专利曝光

近日&#xff0c;美国专利商标局正式授予苹果一项与 Apple Vision Pro 主要功能相关的专利&#xff1a;手部追踪和手指手势。 苹果专利指出&#xff0c;沉浸感的质量取决于几个重要因素。例如&#xff0c;显示器的特性&#xff0c;如图像质量、帧率、像素分辨率、高动态范围 …

vue3+mapboxgl鼠标浮动显示cgcs2000

一、需求 鼠标在地图中浮动展示地图的经纬度&#xff0c;cgcs2000 xy 还有显示带号 二、实现效果 展示经度&#xff0c;纬度&#xff0c;x值&#xff0c;y值显示的是带号和y值 三、思路 3.1、mapbox获取经纬度方法 初始化地图后.on方法中有个mousemove方法 mapboxUtil._m…

2023年31个最适合博主的WordPress主题

自从我最初开始写博客以来&#xff0c;在近十年的经验中&#xff0c;我已经出于各种目的在多个博客中测试和使用了数十种不同的 WordPress 主题。 以下是我挑选的绝对最佳WordPress主题&#xff0c;专门针对不想编写一行代码的博主。 无论您是想创建个人理财博客、撰写时尚、…

[RocketMQ] Broker asyncPutMessage处理消息以及存储的高性能设计措施 (十一)

asyncPutMessage方法真正的用来存储消息。 文章目录 1.asyncPutMessage存储普通消息1.1 checkStoreStatus检查存储状态1.2 checkMessage检查消息 2.CommitLog#asyncPutMessage异步存储消息2.1 处理延迟消息2.2 获取最新mappedFile2.2.1 tryCreateMappedFile创建新的MappedFile2…

【LeetCode热题100】打卡第33天:环形链表LRU缓存

文章目录 【LeetCode热题100】打卡第33天&#xff1a;环形链表&LRU缓存⛅前言 环形链表&#x1f512;题目&#x1f511;题解 LRU缓存&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第33天&#xff1a;环形链表&LRU缓存 ⛅前言 大家好&#xff0c;我是知…

Vue 组件化开发

文章目录 前言组件化开发父子组件相互传数据父传子&#xff1a;自定义属性子传父&#xff1a;自定义事件父子组件互传案例 插槽 slot多个插槽 总结组件化开发总结Vue组件的基本组成子组件使用的三个步骤父子组件相互传递数据 前言 提示&#xff1a;这里可以添加本文要记录的大…

Android-jar包方式连接本地sqlite并操作返回数据

背景: 数据库的创建及字段都是后端人员维护,Android端只是映射相关数据库到本地来操作。为了统一管理操作方式方法,所以提出,后端打jar包的方式封装对Android端数据库sqllite的连接、操作。 说明: 因为之前是后端打jar包,JDBC连接的驱动及方法有差异,导致连接Android…