Yes, as Thomas Point out, basically PCA and related techniques are tools for doing dimensionality reduction. The idea is to fight the "curse of dimensionality" by only getting the most important information and putting mapping it into a low dimension subspace. In this subspace, you can use more simple techniques to actually classify or cluster the data.
You could you from the simple K nearest neighbors to Support Vector Machines to do the classification. For that, you would need also the labels of the data.
Let's try the simplest method (not necessarily the best one) using the kNN:
Now in order to perform the classification you will need another vector with actual labeling. Say you have 100 16x16 pixels images. Of those 100 you have 10 of the digit "0", 10 of digit "2" and so on.
Take the images and make it a vector of 1x1600 put those. Also create a 100x1 vector with the "labels". In matlab is something like:
labels = kron([0:1:9],ones(1,10))
Now apply PCA to your data (assuming each images is a column of the matrix sampleimgs - so 256x100 matrix), you can also do this
with svd:
[coeff,scores]= pca(sampleimgs');
To send them onto a low dimensional space you want (say R^2) - so only choose the two first principal components:
scatter(scores(:,1),scores(:,2))
Now you can apply K-NN on those and classify a new incoming image newimg after sending it to the same PC subspace:
mdl = ClassificationKNN.fit(scores(1:100,[1 2]),labels);
%get the new image:
newimgmap = coef(:,1:2)'*newimg
result = predict(mdl,newimgmap)
Hope it helps.