当前位置:   article > 正文

基于红外图像的弱小目标检测与跟踪

基于红外图像的弱小目标检测与跟踪

Github个人博客:https://joeyos.github.io

红外弱小目标的检测与跟踪算法主要分为两类:跟踪前检测DBT和检测前跟踪TBD。经典的小目标检测与跟踪方法是DBT,即先根据检测概率和虚警概率计算单帧图像的检测门限,然后对每帧图像进行分割,并将目标的单帧检测结果与目标运动轨迹进行关联,最后进行目标跟踪,适应于信噪比比较高的情况,常用的方法有:小波分析方法、背景抑制法、基于变换的方法、门限检测方法。TBD即对单帧图像中有无目标先不进行判断,而是先对图像中较多的可能轨迹同时进行跟踪,然后根据检测概率、虚警概率和信噪比计算出多帧图像的检测门限进行决策,步骤为:背景抑制-可疑目标跟踪-目标检测。

基于局域概率分布的小目标检测

1) 计算序列图像中某一帧图像个像素点的局域灰度概率值,得到该幅图像的局域概率分布图。
2)设定阈值,提取图像中的孤立奇异点
3)提取目标,驱除噪声
4)剔除伪目标:如果某一奇异点在连续的n内连续出现t次,则认为该奇异点为目标点,否则认为是伪目标。

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);  
% 标出最终检测到的小目标
for i=1:length(Prt)              
  plot(Pct(i),Prt(i),'ro');
end

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
function P=target_detect(im,r)
% 功能:计算图像局域灰度概率矩阵
% 输入:im-RGB图像        r-局域半径
% 输出:P-局域灰度概率矩阵

% P-图像转换
if size(size(im),2)==3
im=rgb2gray(im); 
end
[m,n]=size(im);
local_region=zeros(2*r+1,2*r+1); 
% 计算局域概率矩阵
for i=r+1:m-r
  for j=r+1:n-r
    local_region=im(i-r:i+r,j-r:j+r);
    P(i,j)=im(i,j)/sum(sum(local_region));
  end
end

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
function P2=target_refine(Pr,Pc,im2,r1)
% 功能:检测下一帧图像中奇异点位置(上一帧检测到的)附近邻域是否存在奇异点;
local_region1=zeros(2*r1+1,2*r1+1);
P2=zeros(1000,1000);
for i1=1:length(Pr)
   for a=Pr(i1)-r1:Pr(i1)+r1
    for b=Pc(i1)-r1:Pc(i1)+r1
        local_region1=im2(a-r1:a+r1,b-r1:b+r1);
        P2(a,b)=im2(a,b)/sum(sum(local_region1));
    end
  end
end

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

目标标注
频谱

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/361334
推荐阅读
相关标签
  

闽ICP备14008679号