纹理分析统计,matlab中检测对象的特征提取

时间:2010-06-17 15:55:43

标签: matlab computer-vision

我有一个项目可以从picture.it使用反向传播比例共轭梯度进行训练。我使用了10个组件进行输入。 r,g,b,标准差,熵,阈值(Onsu方法),包含对比度,同质性,相关性和能量的glcm。我手动提取它们。我有100输入。 50是对象,50不是object.it很难保持手动方法。所以我想使用循环和数组。我使用2个文件夹作为文件对象而不是对象。如何在2个文件夹中提取文件? 第一个文件夹:C:\ Documents and Settings \ User \ My Documents \ MATLAB \ object 第二个文件夹:C:\ Documents and Settings \ User \ My Documents \ non object

这是我的编码。我手动写它们直到100.你可以帮我把它们分组并循环它们吗?


kl=imread('1.jpg');
g=rgb2gray(kl);
rgb=mean(mean(kl));
r1=rgb(:,:,1);
g1=rgb(:,:,2);
b1=rgb(:,:,3);
std1=std2(g);
entropy1=entropy(g);
tres=graythresh(g);
glcm=graycomatrix(g);
F=graycoprops(glcm,{'Contrast','Homogeneity','Correlation','Energy'});

我希望你能给出解决方案。请帮帮我。

2 个答案:

答案 0 :(得分:3)

如果您的所有文件都命名为1.jpg,2.jpg,...,那么您可以执行以下操作:


for i = 1:50
  fileName = sprintf('%d.jpg', i);
  kl = imread(fileName);

  ... the rest of your code...

end

答案 1 :(得分:3)

如果除了使用@Dima的解决方案循环遍历每个目录中的图像之外,还想循环遍历这两个目录,您可以执行以下操作:

dirNames = {'C:\Documents and Settings\User\My Documents\MATLAB\object','C:\Documents and Settings\User\My Documents\non object'};

for directory = dirNames %# loops directly over the elements of the cell array dirNames
   fileList = dir(fullfile(directory{1},'*.jpg')); %# list all jpgs in the directory
   for iFile = 1:length(fileList)
       %# read the ith file
       kl = imread(fullfile(directory{1},fileList(iFile).name));

       %# do the calculations here

   end
end