Yes that's certainly possible. By looking at the example, the training dataset is a set of images and you are finding a common vocabulary of 500 "words" / features that describes all of them with adequacy. By using
featureVector = encode(bag, img);, what you are doing is you are determining what fraction of each word exists to describe the input image
img. Specifically, if you look at the code in that example section, they plot a bar graph where the horizontal axis represents the word index and the vertical axis represents what fraction each word / feature in the vocabulary is used to represent that image.
Specifically, this is the bar graph that gets produced (taking from the link):
Therefore, similar images should be described with similar features / words and so you could certainly use this as input into your neural network.
However, before you train your neural network, as you suspected, you must represent every image you wish to train with this feature vector. If you intend to use MATLAB's neural network toolbox, you must make sure that each column is an input sample and each row is a feature.
featureVector would actually return a
1 x N vector where
N is the total number of features. However, if you want to do this more smartly, simply create an
imageSet of all of the images you want to transform: , then use one call to
encode to create this desired feature matrix:
imgFolder = '...'; %// Specify image folder here
imgSet = imageSet(imgFolder); %// Create image set
featureMatrix = encode(bag,imgSet).'; %// Encode the images - Make sure you transpose
The result will be a
M x N matrix where
M is the total number of input images you have and
N is the total number of features. To respect the neural networks toolbox, you must transpose this matrix because each column needs to be an input sample, not each row.