FAQ - Frequently Asked Questions

 Browse FAQ      Browse Documentation Wiki   movie Browse EigenGuide Videos
SearchSearch for Keyword(s):


    How do I automate PCA analysis for multiple images?

Possible Solutions:

    Because the version of IMGPCA provided in the standard PLS_Toolbox requires some inputs to operate, IMGPCA is not well suited to automated analysis. Although future versions of the PLS_Toolbox will allow this, the current version requires you use the basic PCA routine and handle the image aspects yourself.

    First, create a preprocessing structure use the preprocess function:
    >> s = preprocess;

    This will bring up a dialog box that lets you specify what preprocessing you want. When you click "OK" it will return a preprocessing structure, s. (Alternatively, you can request the preprocessing method directly using the 'default' keyword. See "preprocess help" for more information.)
    s = 
         description: 'Mean Center' 
           calibrate: {'[data,out{1}] = mncn(data);'} 
               apply: {'data = scale(data,out{1});'} 
                undo: {'data = rescale(data,out{1});'} 
                 out: {} 
         settingsgui: '' 
       settingsonadd: 0 
         usesdataset: 0 
          caloutputs: 1 
             keyword: 'Mean Center' 
            userdata: [] 

    Next, create a PCA options structure using:
    >> opts = pca('options') 
    opts = 
                name: 'options' 
             display: 'on' 
               plots: 'final' 
       outputversion: 3 
       preprocessing: {[]} 
        blockdetails: 'standard' 
    then put the preprocessing structure s into this:
    >> opts.preprocessing{1} = s 
    opts = 
                name: 'options' 
             display: 'on' 
               plots: 'final' 
       outputversion: 3 
       preprocessing: {[1x1 struct]} 
        blockdetails: 'standard' 
    Turn off the display, and turn the plots to 'none':
    >> opts.display = 'off';
    >> opts.plots = 'none'; 
    Take you data and reshape it to number of pixels by number of channels
    (3 in your case) using the 'reshape' function.
    >> data = reshape(data,size(data,1)*size(data,2),size(data,3)); 
    Then use the PCA function like:
    model = pca(data,2,opts); 
    The loadings will be in the model.loads field.

Still having problems? Check our documentation Wiki or try writing our helpdesk at helpdesk@eigenvector.com