一、获取代码方式

获取代码方式1:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

获取代码方式2:
完整代码已上传我的资源:【目标跟踪】基于matlab红外图像弱小目标检测与跟踪【含Matlab源码 374期】

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、简介

0 引言
对于机载红外搜索跟踪系统等远距离目标探测系统, 目标在探测器上的成像往往只占几个像素点, 缺乏充分的目标结构信息, 并且由于图像背景的干扰及探测器扫描系统内部噪声的存在, 使得目标红外图像的信噪比较低。这样红外搜索跟踪系统探测空中运动目标时, 形成的目标红外图像, 实际上是由目标点、复杂的红外背景和噪声组成的序列图像。此类系统的目标检测过程实际上是在背景和噪声干扰的序列图像中进行弱小运动点目标的识别。

目前针对红外图像弱小运动点目标的检测问题所提出的各种算法可归纳为两大类:1) 滤除噪声的算法。图像流检测、基于“软判决”的最大合并积累检测等算法均是在滤除噪声的基础上, 解决剩余噪声与目标点的分离问题, 而当图像中存在较强的背景干扰时, 则上述以滤除噪声为主的算法往往目标检测效果不佳;2) 滤除背景的算法。例如, 基于数学形态学的目标检测算法、基本背景预测算法、最大化背景预测算法等各种滤除背景的目标检测算法, 主要以单帧红外图像运动点目标检测为主, 难以区分目标与强噪声点。

针对上述两类目标检测算法的局限性, 本文提出一种背景预测与目标轨迹搜索相结合的红外图像弱小运动点目标检测算法。该算法通过背景预测滤除目标图像中背景干扰, 再通过目标轨迹搜索使有规律运动的弱小点目标与强噪声点分离, 进而实现复杂背景及强噪声点干扰环境下, 弱小运动点目标的有效检测。

目标检测算法
本文提出的红外图像弱小点目标检测算法主要由3个部分组成:预处理、背景预测、组合帧上的目标轨迹搜索, 如图1所示。首先对输入的序列图像进行高通滤波, 滤除大量的噪声;然后利用背景预测算法计算背景图像, 再将原图像与背景预测图像相减得到序列残差图像, 来滤除背景干扰, 根据残差图像计算阈值, 确定少量的候选目标点;最后根据最大合并算法将序列残差图像形成组合帧图像, 在组合帧图像中搜索目标轨迹, 检测出点目标。

图1 目标检测算法框图
2 预处理
预处理的目的是减少图像中的噪声和杂波, 提高目标与背景的对比度, 增强图像数据的可用性。

目前已提出了多种图像预处理算法, 常用的算法有中值滤波、形态学滤波、高通滤波等。中值滤波算法具有边缘保护特性, 并可有效滤除高频噪声, 但易使图像模糊, 降低图像的对比度;形态学滤波算法也可有效滤除图像的高频噪声, 凸显图像的“奇异点”, 但是结构元素的选取相对比较复杂;高通滤波器可以使目标边缘锐化, 通过改变局部比例来扩大对比度, 有利于后续的目标轨迹搜索。

通过比较这几种常用的预处理算法之后, 本文采用易于实现且效果良好的高通滤波算法对红外图像进行预处理, 根据实际的红外图像特性, 采用5×5高通滤波模板, 如图2所示。

图2 5×5高通滤波模板
2 背景预测算法
在对红外图像高通滤波后, 采用背景预测算法来滤除红外图像中的背景干扰。目前, 已提出了多种基于背景预测的红外图像弱小点目标检测算法, 主要包括基本背景预测算法、最佳权重背景预测算法、最大化背景预测算法和最相似背景预测算法。其中, 基本背景预测算法和最佳权重背景预测算法适用于背景比较单一的红外图像目标检测;最大化背景预测算法和最相似背景预测算法适用于背景起伏较大的红外图像目标检测。本文采用基本背景预测算法来进行红外图像弱小运动点目标的检测。

2.1 背景预测的基本模型
背景预测的原理:背景像素点间相关性强, 而目标则是图像局部区域中的“奇异点”, 与周围背景像素点间差异较大。这样就可以由相邻背景图像点来预测背景中任何一点的灰度值, 通过图像实际灰度值与预测背景值相减得到预测残差, 目标的识别就变成在预测残差中根据门限来寻找灰度值突变点。
基本的背景预测模型为

m=0, …, M-1;n=0, …, N-1. (1)
式中:X0为M×N的红外图像;Y为预测图像;Wj为第j级权重, j=m×M+n对应当前的位置;Sj对应局域背景选取点的范围集合。
预测图像与输入图像之间的残差图像计算如下式:
E (m, n) =X (m, n) -Y (m, n) , (2)
式中:E (m, n) 为残差图像;X (m, n) 为原图像;Y (m, n) 为预测图像。
根据基本背景模型, 背景预测算法要解决的3个关键问题:邻域背景点的选取、权重的选取和阈值的选取。

2.2 基本背景预测算法
领域背景点的选取如图3所示, 标注为P的像素为当前要处理的像素点, 每个方格代表一个像素点, 灰色部分为所选择的背景点。可以看到点P的邻域背景点选择了其3×3邻域外的40个像素点。

权重按下式规定:

式中L为所选背景点的个数, 所选背景点如图3所示, 则L=40, 这是一种等权值设置, 相当于将局域背景像素点的灰度值进行平均作为预测值。

图3 基本背景预测算法的背景选点
如果将图3的选点方法对应成一个滤波器模板, 则可用下式表示:

选定了邻域背景点和权重然后根据 (1) 式计算红外图像背景图, 利用 (2) 式计算残差图像。
根据背景预测算法的原理可知, 残差图像主要包含目标点和噪声点, 利用残差图像的统计特性, 设X¯¯¯为残差图像的均值, σ为残差图像的均方差, 根据3σ准则, 则阈值可定为

如果E (m, n) >β则保留像素灰度值, 否则将像素灰度值设为0.
由于基本背景预测算法所选用的权重模板相当于一个均值滤波器, 所以基本背景预测算法适用于背景均匀的红外图像弱小点目标检测。

2.3 组合帧上检测目标轨迹
经过上述背景预测算法得到的残差图像中包含了高频噪声、目标点和少量的背景点, 经过阈值处理可以确定一些候选目标点, 但还不能准确将目标分离出来, 须进一步利用序列图像中目标运动的连续性和一致性来定位目标点。
将含有少量候选目标点的序列图像进行最大合并累积形成组合帧图像, 并在组合帧图像上搜索目标轨迹。形成组合帧图像和搜索目标轨迹的具体步骤如下:

  1. 组合帧图像的形成。将序列图像侯选目标点叠加到组合帧图像中, 如多幅图像相同位置出现侯选目标点, 则将其灰度值进行累加, 构成组合帧该点灰度值, 如 (6) 式。

    式中:Dc代表组合帧;Di为包含侯选目标点的序列图像。

  2. 目标运动轨迹搜索。在组合帧图像Dc内, 点目标运动将留下一段轨迹, 可以假设在短时间内, 目标轨迹为一条直线。对组合帧图像中的每个后续目标像素点, 定义一个m×n的邻域, 在此邻域内的4个方向上搜索目标轨迹, 邻域搜索方向如图4所示。

    图4 邻域搜索方向
    将搜索方向上的候选目标点像素值进行累加, 即令

    式中track表示搜索方向上候选目标像素点的集合。

  3. 目标运动轨迹的判定。由于目标运动的连续性和一致性, 在目标轨迹方向上对应点的Itrack (x, y) 值应该较大。而对于噪声点, 由于其出现的随机性, 使得对应的Itrack (x, y) 值相对较小。所以对Itrack做判决, 设置门限值β, 若Itrack>β, 则判为在此点处有目标, 否则判为没有目标。由于序列图像中相同位置的候选目标点灰度值进行了叠加, 这样即使目标在视场中不动, 按上述检测规则, 其像素灰度值大于噪声点灰度值。

三、部分源代码

 clear
%生成待检测的图像im1;
im1=0.6*ones(128,128);
im1(80,90)=256;
im1(100,100)=256;
imshow(im1)
% 确定邻域的大小:5×5;
r=2;
k=1;
% 调用编写的函数计算图像的局域灰度概率矩阵;
P=target_detect(im1,r);
figure
mesh(P)
%检测奇异点;
[Pr Pc]=find(P>k/(2*r+1)^2+0.1);
figure
imshow(im1)
hold on
% 在图像im1上标出检测到的奇异点;
for i=1:length(Pr)
plot(Pc(i),Pr(i),'g+')
end
hold on
im2=0.6*ones(128,128);
im2(81,90)=256;
im2(200,200)=256;
r1=1;
k1=1;
% 检测下一帧图像中奇异点位置(上一帧检测到的)附近邻域是否存在奇异点;
P1=target_refine(Pr,Pc,im2,r1);
%确定奇异点的位置;
[Prt Pct]=find(P1>k1/(2*r1+1)^2+0.1);
function P=target_detect(im,r)
% 功能:计算图像局域灰度概率矩阵
% 输入:im-RGB图像        r-局域半径
% 输出:P-局域灰度概率矩阵% P-图像转换
if size(size(im),2)==3
im=rgb2gray(im);
end

四、运行结果


五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.

【目标跟踪】基于matlab红外图像弱小目标检测与跟踪【含Matlab源码 374期】相关推荐

  1. 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]声音信号频谱分析仪[含GUI源码 325期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  2. 【Matlab图像检索】综合特征图像检索【含GUI源码 395期】

    一.代码运行视频(哔哩哔哩) [Matlab图像检索]综合特征图像检索[含GUI源码 395期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  3. 【Matlab肌电信号】肌电信号处理【含GUI源码 966期】

    一.代码运行视频(哔哩哔哩) [Matlab肌电信号]肌电信号处理[含GUI源码 966期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继周,杨 ...

  4. 【Matlab条形码识别】二维条形码识别【含GUI源码 607期】

    一.代码运行视频(哔哩哔哩) [Matlab条形码识别]二维条形码识别[含GUI源码 607期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  5. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  6. 【雷达检测】基于matlab模拟海洋监视雷达检测仿真【含Matlab源码 2268期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[雷达检测]基于matlab模拟海洋监视雷达检测仿真[含Matlab源码 2268期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方 ...

  7. 【Matlab水果识别】苹果质量检测及分级系统(带面板)【含GUI源码 1613期】

    一.代码运行视频(哔哩哔哩) [Matlab水果识别]苹果质量检测及分级系统(带面板)[含GUI源码 1613期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

  8. Android实现佩戴安全帽检测和识别(含Android源码)

    Android实现佩戴安全帽检测和识别(含Android源码) 目录 Android实现佩戴安全帽检测和识别(含Android源码) 1. 前言 2. 佩戴安全帽检测和识别的方法 (1)基于目标检测的 ...

  9. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  10. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

最新文章

  1. 什么是三极管的倒置状态及其作用!
  2. Win10系统删除文件需提供管理员权限-- 解决方案
  3. 如何在Chatbot中应用深度学习
  4. k8s滚动升级_k8s deployment 滚动更新
  5. 网站显示不正常服务器怎么弄,你真的知道网站出现收录不正常的原因是什么吗...
  6. bzoj 1046: [HAOI2007]上升序列【dp+二分】
  7. jsp连接mysql 菜鸟_在JSP中访问数据库大全
  8. 干货:io流带时间的聊天室【客户端与服务端】
  9. java里oop思想_Java OOP 思想解析
  10. js实现搜索历史记录功能
  11. C++面向对象程序设计
  12. 微信应用架构!!-----微信应用能力篇
  13. 【框架】amaze ui学习(一)
  14. Java锁与线程的那些“不可描述”的事儿
  15. 【通俗易懂】什么是机器学习
  16. TL-WDN5200H无线usb网卡在ubuntu18.04/16.04上的使用
  17. rem 与 px 换算关系
  18. 计算机配件销售系统,电脑配件销售管理系统
  19. python的ogr模块_GDAL python教程(1)——用OGR读写矢量数据
  20. SSL证书常见的问题汇总

热门文章

  1. python - 安装/解释器/变量
  2. 小程序--改变子级别页面导航栏信息 / navigationBarTitleText
  3. AJAX不能访问MVC后台程序的问题
  4. SendMessage 与 PostMessage
  5. angular之factory、service、provider
  6. codeforces 212E IT Restaurants(树形dp+背包思想)
  7. Linux下的防火墙
  8. 黑马程序员 Python学习笔记之 注释
  9. Attit 现代编程语言重要特性目录第一章 类型系统 基本三大类型 2第一节 字符串 数字 bool 2第二节 推断局部变量 2第三节 动态类型 2第二章 可读性与开发效率 简单性 2
  10. Atitit mysql存储过程编写指南 1. 定义变量 1 1.1. 变量名以@开头用户变量 会话变量 1 1.2. 以declare关键字声明 存储过程变量 2 1.3. @是用户自定义变量,