Basic PCA based log-Likelihood Classifier

PCA algorithm suitable for detection / recognition of 2D image "objects"
9.4K Downloads
Updated 11 Feb 2010

View License

Introduction:
Many image problems require some kind of detection of objects, in which there is a natural variation in appearance of the objects between the images. For instance, face recognition, lesion detection, nerve channel segmentation.

These image problems can be solved by manually annotating of image objects to train a model which recognize normal object appearance. This can be done with a PCA based maximum likelihood classifier.

Software Description:
We provide here a basic PCA classifier for a two class classification problem. Two class is the most common, is an pixel a brain lesion or not?, is this face of the home owner or not?

Multiple Sclerosis example:
An example is given, with some multimodal MRI scans from Multiple Sclerosis patients, in which the brain lesions of two patients are annotated and in the third are detected by the PCA model. This example uses the gray-value regions and gray-value derivatives as feature vectors. But by using more or other features this example can be easily extended to your own recognition / detection example.

This example uses some c-code to get the image regions for speed improvement.

Literature:
- Kroon, D.J. and van Oort, E.S.B. and Slump, C.H. "Multiple Sclerosis Detection in Multispectral Magnetic Resonance Images with Principal Components Analysis"
- Kauffman et al. "Grip-pattern recognition for smart guns"

Final:
Try/study and than extend the example to your own application.

Please report bugs, success and suggestions.

Cite As

Dirk-Jan Kroon (2024). Basic PCA based log-Likelihood Classifier (https://www.mathworks.com/matlabcentral/fileexchange/24817-basic-pca-based-log-likelihood-classifier), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2009a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
1.2.0.0

Changed (I'm not entirely sure if it is correct) :
[U,S] = svd(G);
Geigenvalue=diag(S).^2
to
Geigenvalue=diag(S);

1.1.0.0

Linux Ubuntu Tested

1.0.0.0