赞
踩
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
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
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。