BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / ml-dm / #11293同步于 2013/8/25
ML_DM机器人发帖

HMM人脸识别程序 matlab

gubgub
2013/8/25镜像同步0 回复
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
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。