红外图像弱小目标

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

红外图像弱小目标PF-TBD算法源程序

% 将粒子滤波算法应用于红外弱小目标TBD问题,验证其检测、跟踪目标的有效性

clear;clc

% 粒子数目

N = 2000;

% 采样时间

T = 1;

% 仿真结束时间(采样总帧数)

T_end = 30;

% 假定目标从某一特定帧开始出现,然后在另一特定帧消失

T_ap = 6;

T_dp = 24;

% 采样时间序列

SimTime = zeros(floor(T_end/T),1);

% 分辨单元数目

N_x = 32; % 横向分布单元数目

M_y = 32; % 纵向分布单元数目

% 分辨单元的宽度

Delta_X = 1;

Delta_Y = 1;

% 传感器的模糊参数值

SIGMA = 0.7;

% 目标初始出现概率

mu = 0.05;

% 目标速度区间

vmin = 0.2;

vmax = 1;

% 目标强度(灰度值)区间

Imin = 10;

Imax = 30;

% 抽样阈值(在大于r_th的区域内均匀分布)

r_th = 2.5;

% 扩散因子(目标影响相邻分辨单元的程度)

p = 3;

% 目标Markov 过程转移概率相关参数

Pb = 0.05;

Pd = 0.05;

% 转移矩阵的表达式

PI_T = [1-Pb,Pb

Pd,1-Pd];

% 转移矩阵PI 的行数(列数)

PI_s = size(PI_T,1);

% 系统状态转移矩阵

Phi = [1,T,0,0,0

0,1,0,0,0

0,0,1,T,0

0,0,0,1,0

0,0,0,0,1];

% 系统噪声协方差矩阵中的目标状态和灰度幅值噪声强度

q1 = 0.001; % 目标状态变化强度

q2 = 0.01; % 目标灰度值变化强度

% 系统噪声协方差矩阵

Q = [q1*T^3/3,q1*T^2/2,0,0,0

q1*T^2/2,q1*T, 0,0,0

0,0,q1*T^3/3,q1*T^2/2,0

0,0,q1*T^2/2, q1*T, 0

0,0,0,0,q2*T];

% 系统观测噪声

R = 1.5^2;

%*************************************

% 变量取值初始化过程

%*************************************

% 定义滤波初值(假定目标出现时的初值)

X = [4.2,0.45,7.2,0.25,20]';

% 整个粒子的集合,其中第6位代表当前时刻E判决标识位,而第7位为上一时刻值

X_PF = zeros(7,N);

% 单个粒子状态值

X_PF_i = zeros(7,1);

% 初始时假定每个粒子的权值为均匀的

w_i = 1/N*zeros(1,N);

% 预测粒子的均值及其协方差

X_PF_mean = zeros(5,1);

Px_PF = Q;

Xtru = zeros(5,floor(T_end/T));

Xest_PF = zeros(5,floor(T_end/T));

% 经PF估计出的目标出现概率

Prob_PF = zeros(1,floor(T_end/T));

% 每帧红外图像的观测值(以每个像素点为基准)

Measure_i = zeros(N_x,M_y);

H_i = zeros(N_x,M_y);

% 为了计算各粒子的权值,生成初始时刻的红外观测图像

for i=1:N_x

for j = 1:M_y

Measure_i(i,j) = sqrt(R)*randn(1);

end

end

% 当考虑不设置阈值的情况时,此时假定目标会在所有的观测单元中随机出现;

% 当考虑阈值时,在大于门限的区域内均匀分布(如何实现)

% 由于假定目标初始出现概率为0.05,则可认为只有100个粒子的E值为1,其余均为0

for i=1:20:2000

% 假定每20个粒子出现一个E0=1的粒子

X_PF_i = zeros(7,1);

% 在测量值超过门限的区域中均匀地抽取粒子,首先找出超过门限的区域

[PosRow,PosCol] = find(Measure_i>r_th);

NPoints = length(PosRow);

TarPos = ceil(rand(1)*NPoints);

% 抽取粒子

X_PF_i(1) = PosRow(TarPos);

X_PF_i(2) = vmin + (vmax-vmin)*rand(1);

X_PF_i(3) = PosCol(TarPos);

X_PF_i(4) = vmin + (vmax-vmin)*rand(1);

X_PF_i(5) = Imin + (Imax-Imin)*rand(1);

X_PF_i(6) = 1;

X_PF_i(7) = 0;% 保存的是上一时刻的E判决值

X_PF(:,i) = X_PF_i;

end

相关文档
最新文档