建立高斯模型
代码块
%matlab
%– 程序初始化 —%
clear % 清除所有变量。否则工作空间窗口中保留的全局变量会影响新程序的运行结果。
clc % 清除所有命令。否则命令窗口中同时显示原有结果和新结果会引起混乱。
close all % 清除所有显示窗口。打开窗口过多影响运行速度。
I=imread(‘5.ppm’);
subplot(2,3,1),imshow(I);
title(‘原图’);
h=rgb2ycbcr(I);
subplot(2,3,2),imshow(h);
title(‘YCbCr图’);
[a,b,c]=size(h); %返回数组维数
cb=double(h(:,:,2)); %颜色分通道
cr=double(h(:,:,3));
for i=1:a %到行像素数
for j=1:b %到列像素数
x=[cb(i,j),cr(i,j)];
m=[113.6339 175.1614]; %红色标志经验值
n=[48.0929 -105.5544;-105.5544 259.3353];
% m=[158.3810 105.3633]; %蓝色
% n=[65.8423 -55.3562;-55.3562 58.0450];
inv(n) ;
p(i,j)=exp((-0.5)*(x-m)*inv(n)*(x-m)');%服从高斯分布 %计算肤色高斯后验概率
end
end
Q=p(:);
g=p/max(Q);
subplot(2,3,3),imshow(g);
title(‘似然图’); %概率图
w=I;
for i=1:a %二值图
for j=1:b
if (p(i,j)<0.1)
p(i,j)=0;
else
p(i,j)=1;
end
q(i,j)=double(255*p(i,j));
end
end
t=medfilt2(q); %中值滤波
subplot(2,3,4),imshow(t);
title(‘二值分割图’);