0

MATLABのbagOfFeatures()関数を使いたいです。ただし、imageSetまたはimageDataStoreの形式で入力する必要があります。私が実行したいコードは以下の通りである:ImageSetまたはimageDataStoreの形式でMATLABのBagOfFeatures()関数に入力を与える方法は?

Dataset = 'D:\dsktop\kinect_leap_dataset\acquisitions'; 
thresh1 = 0; 
thresh2 = 20; 

k = dir(fullfile(Dataset,'\P*\G*\*_depth.png')); 
kf = {k(~[k.isdir]).folder}; 
kn = {k(~[k.isdir]).name}; 

for j=1:length(k) 
% Applying thresholding to the original image 
    full_name = horzcat(kf{j},filesep,kn{j}); 
    image = imread(full_name); 
    image_bin1 = (image < thresh2); 
    image_bin2 = (thresh1 < image); 
    image_bin = abs(image_bin2- image_bin1); 
    sequence{i} = image_bin; 
end 
% Bag of Features 
bag = bagOfFeatures(sequence); 

しかし、「配列」は、細胞のクラスですので、bagOfFeatures()私にエラーを与えています。

Dataset = 'D:\dsktop\kinect_leap_dataset\acquisitions'; 
imgFolder = fullfile(Dataset); 
imgSets = imageSet(imgFolder, 'recursive'); 
imgSets.Description 

しかし、今の問題はimgSetsに保存された画像の処理(しきい値)を行う方法です。だから私はこれを試してみました。また、「image_bin」イメージをimageSetクラスに保存する方法を処理した後、BagOfFeatures()関数への入力として与えることができます。

答えて

0

私はこの問題を自分で解決しました。 BagOfFeatures()にimageSetまたはimageStroreとして入力するには、すべての "image_bin"イメージをPCのフォルダに格納する必要があります。

mkdir D:\.............\cropped 

はその後、私たちは、その後

file_name = sprintf('D:/............/cropped/image_bin_%d.png',j); 
imwrite(image_bin, file_name); 

として、ループ内でそのフォルダ内のデータを「image_bin」を救うために持っているように はそのために、私たちは希望の場所でそのフォルダを作成する必要があります上のフォルダからのファイルは、

imds = imageDatastore('D:/.............../cropped', 'Labels', label); 
% label is an array of labels made by the user 
[trainingSet, validationSet] = splitEachLabel(imds, 0.3, 'randomize'); 

% Bag of Features 
bag = bagOfFeatures(trainingSet); 

というように読み込まれます。

関連する問題