www.pudn.com > Space.rar > Space.m


%************************************************************************** 
%     图像检索——空间特征提取 
%利用马尔可夫模型估计的条件概率做为空间特征向量 
%Image : 输入图像数据 
% 
%************************************************************************** 
function Sp = Space(Image) 
 
% Image = imread('e:\\2\\2.jpg'); 
% [M,N,O] = size(Image); 
M = 256; 
N = 256; 
%-------------------------------------------------------------------------- 
%rgb彩色图像转换到hsv空间 
%-------------------------------------------------------------------------- 
Gray=rgb2hsv(Image); 
 
%-------------------------------------------------------------------------- 
%将图像按8*8分块,并计算每块小区域的均值和标准差,并写出状态矩阵图 
%-------------------------------------------------------------------------- 
for i = 1:256/8 
    for j = 1:256/8 
        aaaa(i,j)=mean2(Gray(8*(i-1)+1:8*i,8*(j-1)+1:8*j,1)); 
        m_matrix_h(i,j) = mean(mean(Gray(8*(i-1)+1:8*i,8*(j-1)+1:8*j,1))); 
        delta_h(i,j)    = sqrt(sum(sum((Gray(8*(i-1)+1:8*i,8*(j-1)+1:8*j,1)-m_matrix_h(i,j)).^2))/64); 
        m_matrix_s(i,j) = mean(mean(Gray(8*(i-1)+1:8*i,8*(j-1)+1:8*j,2))); 
        delta_s(i,j)    = sqrt(sum(sum((Gray(8*(i-1)+1:8*i,8*(j-1)+1:8*j,2)-m_matrix_s(i,j)).^2))/64); 
        m_matrix_v(i,j) = mean(mean(Gray(8*(i-1)+1:8*i,8*(j-1)+1:8*j,3))); 
        delta_v(i,j)    = sqrt(sum(sum((Gray(8*(i-1)+1:8*i,8*(j-1)+1:8*j,3)-m_matrix_v(i,j)).^2))/64); 
        if m_matrix_h(i,j)<0.01 
            m_matrix_h(i,j)=0.01; 
        end 
        if m_matrix_s(i,j)<0.01 
            m_matrix_s(i,j)=0.01; 
        end 
        if m_matrix_v(i,j)<0.01 
            m_matrix_v(i,j)=0.01; 
        end 
        %写出状态矩阵图,按统计特性,取两个阈值0.15,0.05 
        if delta_h(i,j)>=0.15 
            state_h(i,j) = 3; 
        elseif delta_h(i,j)<=0.05 
            state_h(i,j) = 1; 
        else 
            state_h(i,j) = 2; 
        end 
        if delta_s(i,j)>=0.15 
            state_s(i,j) = 3; 
        elseif delta_s(i,j)<=0.05 
            state_s(i,j) = 1; 
        else 
            state_s(i,j) = 2; 
        end 
        if delta_v(i,j)>=0.15 
            state_v(i,j) = 3; 
        elseif delta_v(i,j)<=0.05 
            state_v(i,j) = 1; 
        else 
            state_v(i,j) = 2; 
        end 
    end 
end 
 
%-------------------------------------------------------------------------- 
%根据马尔可夫模型估计出转移概率矩阵,将其作为空间特征 
%-------------------------------------------------------------------------- 
%用均值代表图像块,并将均值矩阵和状态矩阵转化为一维向量, 
M_matrix_h = ceil(reshape(m_matrix_h.*100,1,[])); 
M_matrix_s = ceil(reshape(m_matrix_s.*100,1,[])); 
M_matrix_v = ceil(reshape(m_matrix_v.*100,1,[])); 
State_h    = reshape(state_h,1,[]); 
State_s    = reshape(state_s,1,[]); 
State_v    = reshape(state_v,1,[]); 
[tran1,e1] = hmmestimate(M_matrix_h, State_h); 
[tran2,e2] = hmmestimate(M_matrix_s, State_s); 
[tran3,e3] = hmmestimate(M_matrix_v, State_v); 
%只考虑自关联 
Sp = [reshape(diag(tran1),1,[]),reshape(diag(tran2),1,[]),reshape(diag(tran3),1,[])];