clear; %清除之前的变量
clc;
train_path = 'F:\kde\train_set2\';%训练图片的路径
for i = 1:20
train_set{i} = imread([train_path,num2str(i), '.jpg']);
end %连续读入20张训练样本
test_set = imread('F:\kde\test_set2\test.jpg');%测试图片的路径
[Height, Width, Channel] = size(test_set);%计算图片的高度,宽度和通道数
h = 30; %带宽设为20
for m = 1:Height
for n = 1:Width
for i = 1:20
if ( ((double(test_set(m, n, 1)) - double( train_set{i}(m, n, 1))) / h).^2 <= 1) ...
&& (((double(test_set(m, n, 2)) - double( train_set{i}(m, n, 2))) / h).^2 <= 1) ...
&&(((double(test_set(m, n, 3)) - double( train_set{i}(m, n, 3))) / h).^2 <= 1)
k(i) = (1 - ((double(test_set(m, n, 1)) - double(train_set{i}(m, n, 1))) / h).^2) ...
* (1-((double(test_set(m,n,2))-double(train_set{i}(m,n,2)))/h).^2) ...
*(1-((double(test_set(m,n,3))-double(train_set{i}(m,n,3)))/h).^2);
else
k(i)=0;
end
end
Pr(m, n) = 15 / (8 * pi * 20 * (h^3)) * sum(k);%计算基于Epanechnikov核函数的三维通道彩色图像像素值的概率密度估计函数
end
end
colormap(jet);
mesh(Pr);
view(40,-90);
thresh = graythresh(Pr);
I = 1-im2bw(Pr,thresh);
imshow(I)