%基于核密度估计的运动目标视觉检测(GPU加速版);
%读取所有训练数据与测试数据
clear all;
C=cell(21);
for i=1:21
C{i}=imread(strcat('0',num2str(i-1,'%02d'),'0.jpg'));
end
%核密度值估计
h=90;
medpr=gpuArray.ones(576,768);
finpr=gpuArray.zeros(576,768);
tic;%核函数值运算记时
for n=1:20
for i=1:3
A=gpuArray(single(C{21}(:,:,i)));
B=gpuArray(single(C{n}(:,:,i)));
sinpr=gpuArray.ones(576,768)-(1/h^2)*(A-B).*(A-B);
sinpr(sinpr<0)=0;%满足核函数条件;
medpr=medpr.*sinpr;
end
finpr=finpr+medpr;
medpr=gpuArray.ones(576,768);
end
pr=gather((15/(8*pi*20*h^3))*finpr);
toc;
%绘制核密度函数估计值图像
mesh(pr);
%绘制二值化图像
pr(pr<4*10^(-7))=0;
pr(pr>4*10^(-7))=1;
pr=imcomplement(pr);
figure;
imshow(pr);