阅读SVM训练数据集

时间:2014-04-06 08:41:17

标签: image matlab image-processing svm matlab-cvst

我想阅读SVM培训的培训图像集。这是代码

  %Location of the image.
  Class1 = 'Training/11';
  % load the dataset
  dirList = dir(fullfile(Class1,'*.ppm'));
  %dirList
  files={dirList.name}';

我得到的文件类型是cell类型。我如何访问这些图像来执行某些操作,比如显示它并进行特征提取?

当我试图展示它时:

   figure, imshow(files)

我收到了这个错误

   Error using imageDisplayValidateParams
   Expected input number 1, I, to be one of these types:

   double, single, uint8, uint16, uint32, uint64, int8, int16, int32, int64,
   logical

   Instead its type was cell.

    Error in imageDisplayValidateParams (line 12)
    validateattributes(common_args.CData, {'numeric','logical'},...

    Error in imageDisplayParseInputs (line 79)
    common_args = imageDisplayValidateParams(common_args);

     Error in imshow (line 220)
     [common_args,specific_args] = ...

您知道如何在文件中访问和处理这些图像吗?

MY FOLDER DIRECTORY !!

MY DIRECTORY

Inside my training Folder

1 个答案:

答案 0 :(得分:2)

首先,imshow需要一个实际图像作为输入。您正在指定字符串的单元格数组。最重要的是,您一次只能显示一个图像。尝试访问单个单元格元素,然后使用它们读取图像并在屏幕上显示它们。

im1 = imread(files{1}); % Read in first image
imshow(im1); % Show the first image
figure;
im2 = imread(files{2}); % Read in second image
imshow(im2); % Show the second image

如果您想要显示所有这些内容,可以尝试使用imshowsubplot的组合。

假设您有9张图片,并希望将它们整理成3 x 3网格。你可以这样做:

figure;
for i = 1 : 9
    subplot(3, 3, i);
    im = imread(files{i});
    imshow(im);
end

现在进行特征提取,我的建议是你看一下MATLAB附带的计算机视觉工具箱。有一整套工具可以为您执行特征提取。诸如MSER,SURF,HOG之类的东西以及匹配图像对之间关键点的方法。

点击此链接:http://www.mathworks.com/products/computer-vision/code-examples.html