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

基于霍夫变换的航迹起始算法研究(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.

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

相关文章:

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

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 一、设计内容 利用Hough变换处理量测得到的含杂波的二维坐标&#xff0c;解决多目标航迹起始问题。使用Matlab进行仿真&#x…...

如何使用Excel公式将(d:1,a:4,c:2,b:3)快速分割成8列并按顺序排列

Excel是一款功能强大的电子表格软件&#xff0c;可以帮助我们处理各种数据。在处理数据时&#xff0c;有时候需要将一列数据按照特定的格式进行分割和重新排列。本文将介绍如何使用Excel公式将"(d:1,a:4,c:2,b:3)"快速分割成8列&#xff0c;并按照指定顺序排列为&quo…...

遥控泊车系统技术规范

目 录 1. 版本履历... 3 2. 文档使用范围... 3 3. 术语缩写... 3 4. 系统架构... 4 5. 功能需求... 4 5.1 功能清单... 4 6.2 功能关系描述&#xff08;如有&#xff09;... 4 5.3 功能1. 4 5.3.1 功能总体状态动态说…...

qt 线程状态机实现并发自动任务

一、状态机类 头文件 MyStateMachine.h#ifndef MYSTATEMACHINE_H #define MYSTATEMACHINE_H#include <QStateMachine> #include "ActionTask.h" #include...

社交机器人培育

论文&#xff1a; 自我繁殖的假新闻&#xff1a;机器人和人工智能使印度冲突地区的社会两极分化永久化 Self-Breeding Fake News: Bots and Artificial Intelligence Perpetuate Social Polarization in India’s Conflict Zones 论文链接&#xff1a;https://jps.library.ut…...

CUnit在ARM平台上的离线搭建(让CUnit编译安装成功之后的可执行文件.so变成ARM下的—ARM aarch64)(实用篇)

前言&#xff1a;1 CUint-2.1-3.tar.bz2压缩安装包下载并解压2 进入CUint-2.1-3目录并且通过指令./bootstrap*产生configure *执行文件3 执行./configure*命令4 make编译5 make install 安装 前言&#xff1a; 在X86架构上的Linux操作系统上面进行cmake编译&#xff08;Cyclon…...

整数序列(山东大学考研机试题)

水仙花数(中南考研机试题) 链接:3644. 水仙花数 - AcWing题库 /* 暴力枚举罢了 */ #include<iostream> using namespace std; const int N1e3100; int book[N]; int pow3(int k){return k*k*k; } int main() {int m,n;for(int i100;i<999;i){int t1,t2,t3;t1 i%10;t…...

k8s集群安装

目录 一 主机准备 1.1 设备配置 ⚠️注意1 ⚠️注意2 1.2 环境准备 1.3docker安装 二 安装kubeadm、kubectl、kubelet 2.1 添加镜像源 2.2 安装 三 master节点部署 四 node节点加入集群 五 CNI网络插件calico 六 其他节点使用kubectl 1.拷贝文件 2.添加到环境变量…...

【webrtc】ProcessThreadAttached

RegisterModule 调用所在的线程指针传递给ProcessThreadAttached ProcessThreadAttached 调用不是在worker thread 而是在 registers/deregister 这个module或者 start stop 这个module的时候 ** ** pacedsender是一个moudle -实现了...

Orange pi3初调试

因为树莓派沦为理财产品1年前出手殆尽后&#xff0c;现在唯一一个B性能不足一直没动力调试&#xff0c;沦为吃灰工具。 偶然之间多多给推了个orange产品预售&#xff0c;看了下pi3的参数&#xff0c;这不和赚了差价的3B一个性能吗&#xff1f;果断定了个预售款&#xff0c;在差…...

手机里的视频怎么转换成MP4格式?简单的转换方法分享

MP4格式是一种广泛使用的视频格式&#xff0c;几乎所有设备和操作系统都支持MP4格式的视频播放。无论是使用 iPhone、iPad、安卓手机、电视等各种设备&#xff0c;都可以播放 MP4 格式的视频。这种广泛的兼容性使得 MP4 成为一种非常方便的视频格式&#xff0c;我们可以随时随地…...

Matlab数学建模实战——(Lokta-Volterra掠食者-猎物方程)

1.题目 问题1 该数学建模的第一问和第二问主要是用Matlab求解微分方程组&#xff0c;直接编程即可。 求解 Step1改写 y(1)ry(2)f Step2得y的导数 y(1).2y(1)-ay(1)*y(2)y(2).-y(2)a*y(1)*y(2) Step3编程 clear; a0.01; F(t,y)[2*y(1)-a*y(1)*y(2);-y(2)a*y(1)*y(2)]; […...

windows下软件推荐

起源与目的 选择任何一个系统作为主力系统都是要好好考虑的。 在去年新买了一块1T的SSD后&#xff0c;就好好想了想这个问题。 Arch Linux, Ubuntu, Windows, macOS, deepin都是在考虑范围的。 不过我考虑到使用体验&#xff0c;最终还是选择了windows。 不选择macOS主要是不喜…...

SQlite数据库

SQlite数据库 1.SQLite简介 轻量化&#xff0c;易用的嵌入式数据库&#xff0c;用于设备端的数据管理&#xff0c;可以理解成单点的数据库。传统服务器型数据库用于管理多端设备&#xff0c;更加复杂 SQLite是一个无服务器的数据库&#xff0c;是自包含的。这也称为嵌入式数…...

Doris-问题

1.启动BE报错 设置系统最大打开文件句柄数(注意这里的*不要去掉) 重启生效!!!重启生效!!!重启生效!!! sudo vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072 重启生效...

什么是OA系统,什么是工单系统,有啥区别?

一、OA系统与工单系统介绍 1、什么是OA系统 OA系统全称为Office Automation&#xff0c;即办公自动化系统。它是一种专门为企业和机构的日常办公工作提供服务的综合性软件平台&#xff0c;具有信息管理、流程管理、知识管理&#xff08;档案和业务管理&#xff09;、协同办公…...

DDoS攻击:网络安全的威胁

什么是DDoS攻击&#xff1f; DDoS&#xff08;分布式拒绝服务&#xff09;攻击是一种恶意网络攻击&#xff0c;目的是通过发送大量的请求或占用目标系统的资源&#xff0c;使其无法正常运行。在DDoS攻击中&#xff0c;攻击者使用分布在多个地理位置的多台计算机&#xff08;也称…...

docker版jxTMS使用指南:device的调整

本文讲解4.2版jxTMS对device的调整&#xff0c;整个系列的文章请查看&#xff1a;docker版jxTMS使用指南&#xff1a;4.2版升级内容 docker版本的使用&#xff0c;请参考docker版jxTMS使用指南 4.0版jxTMS的说明&#xff0c;请查看&#xff1a;4.0版升级内容 为了适应拉取模…...

AI智能语音机器人的功能和作用都有哪些?

智能语音机器人是一种能够使用自然语言处理技术和人工智能算法&#xff0c;通过声音与用户进行交互的机器人。它可以回答用户提出的问题、处理用户的投诉、提供产品或服务的相关信息等等。 实现一个智能语音机器人需要涉及多个技术领域&#xff0c;包括自然语言处理、语音识别…...

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

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

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...