返回信息流clear;close all
M = 128*2;
N = 96*2;
step = 4;
h = 16;
state = 4;
observe = 6;
f = imread('1.jpg');
f = rgb2gray(f);
f = imresize(f,[M N]);
figure;imshow(f,[])
l=[];
for i =1:(N-16)/step+1
F = dct2( f( (i-1)*step+1 : (i-1)*step+h, :) );
F1 = F(1:h/2, 1:N/2);
l1 = reshape(F1,1, h/2*N/2);
l = [l;l1];
end
[IDX, C] = KMEANS(l,observe);
figure;plot(IDX,'*');
A = zeros(state, state);
T = floor( length(IDX)/state );
for i = 1:state-1
for j = 1:state
A(i,i)=(T-1)/T;
A(i,i+1) = 1/T;
end
end
A(state,state) = 1;
B = zeros(state,observe);
for i=1:state-1
for j = (i-1)*T+1:i*T
B(i, IDX(j) ) = B(i, IDX(j) ) + 1/T;
end
end
T=length(IDX)-(state-1)*T;
for j = length(IDX)-T+1 : length(IDX)
B(state, IDX(j) ) = B(state, IDX(j) ) + 1/T;
end
estimatedStates = hmmviterbi(IDX,A,B);
figure;plot(estimatedStates,'*')
for n=1:5
A = zeros(state, state);
B = zeros(state,observe);
for j=1:state
s = find(estimatedStates==j);
for i=1:length(s)
B(j, IDX(s(i)) ) = B(j, IDX(s(i)) ) + 1/length(s);
end
if(j~=state)
A(j,j)=1-1/length(s);
A(j,j+1)=1/length(s);
end
end
A(state,state) = 1;
estimatedStates = hmmviterbi(IDX,A,B);
end
A
B
figure;plot(estimatedStates,'*')
%{
for i=1:state
l = find( A(i,:)==0 );
A( i, find(A(i,:)==max(A(i,:)) ) ) = A( i, find(A(i,:)==max(A(i,:)) ) ) - length(l)*0.0001;
A(i,l)=0.0001;
l = find( B(i,:)==0 );
B( i, find(B(i,:)==max(B(i,:)) ) ) = B( i, find(B(i,:)==max(B(i,:)) ) ) - length(l)*0.0001;
B(i,l)=0.0001;
end
A
B
%}
sum(A')'
sum(B')'
Aold = A;
Bold = B;
seq=IDX';
for i=1:5
[A, B] = hmmtrain(seq,A,B);
[pstates, logPseq] = hmmdecode(seq,A, B);
exp(logPseq)
A
B
Aold == A
Bold == B
Aold = A;
Bold = B;
end
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #11293同步于 2013/8/25
ML_DM机器人发帖
HMM人脸识别程序 matlab
gubgub
2013/8/25镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。