如何在Matlab中从LBP图像的直方图中保存特征值?

时间:2015-07-07 21:03:44

标签: matlab image-processing feature-extraction

我正在使用本地二进制模式LBP)来提取图像组的功能( 500个图像在Training文件夹中,100个图像在Test文件夹中)。实际上,我已经成功地提取了这些功能,但我不确定它们是否以正确的方式保存。

以下是提取功能的代码的一部分:

for x = 1:total_images
% Specify images names with full path and extension    
full_name= fullfile(test_set, filenames(x).name);

% Read images from Training folder
I2 = imread(full_name);
I3=I2;
m=size(I2,1);
n=size(I2,2);

for i=2:m-1
    for j=2:n-1
        c=I2(i,j);
        I3(i-1,j-1)=I2(i-1,j-1)>c;
        I3(i-1,j)=I2(i-1,j)>c;
        I3(i-1,j+1)=I2(i-1,j+1)>c; 
        I3(i,j+1)=I2(i,j+1)>c;
        I3(i+1,j+1)=I2(i+1,j+1)>c; 
        I3(i+1,j)=I2(i+1,j)>c; 
        I3(i+1,j-1)=I2(i+1,j-1)>c; 
        I3(i,j-1)=I2(i,j-1)>c;
        LBP (i,j) =I3(i-1,j-1)*2^7+I3(i-1,j)*2^6+I3(i-1,j+1)*2^5+ ...
            I3(i,j+1)*2^4+I3(i+1,j+1)*2^3+I3(i+1,j)*2^2+ ...
            I3(i+1,j-1)*2^1+I3(i,j-1)*2^0;
    end
end

featureMatrix {x} = hist(LBP,0:255); 

end 

通过使用此代码,我获得了所有图像的LBP个功能,但我不确定是否在矩阵中正确保存它们。如何从LBP图像的直方图中保存特征值?我想为每个图像存储这个值。

featureMatrix是一个存储数据的矩阵。它应该由500行组成,每行应该包含每个图像的所有特征。

任何答案都将不胜感激。

1 个答案:

答案 0 :(得分:1)

你应该在进入外循环之前初始化特征矩阵(如果你知道LBP的大小):

featureMatrix = zeros(total_images,size_LBP); % where size_LBP is the number of columns of LBP.

然后用:

替换循环中的featureMatrix {x} = hist(LBP,0:255);

featureMatrix(x,:) = hist(LBP,255);

我希望这适合你!